定义如下字符串类, 实现C++字符串的存储和操作。 class myString { public : ……. // 成员函数 private: char *pStr ; // 指向存储字符串的空间 new char[size+1] int size ; //包含字符的数目 } ; int main() { // 测试代码 myString s2, s1(“Hello”); cout<< s1.get(0) <<endl; //输出H s2.print(); //输出“空字符串” cout<< s2.getLen(); <<endl; // 输出0 s2.set (“Hello world”); s2.print(); //输出“Hello world” s1.toUpper(); s1.print(); //输出HELLO myStrin s3 =s2; cout<< s3.getLen(); <<endl; // 输出11 if( s2. strcompare(s3)) cout<<”字符串相同”; else cout<<”字符串不同”; return 0; }
时间: 2023-04-09 07:03:57 浏览: 54
我可以回答这个问题。这是一个关于定义字符串类并实现字符串操作的问题。在这个问题中,需要定义一个名为myString的类,其中包含一个指向存储字符串的空间的指针pStr和一个包含字符数目的整数size。该类还需要实现一些成员函数,例如get、print、getLen、set、toUpper和strcompare等。在主函数中,需要测试这些成员函数的功能,例如输出字符串中的某个字符、输出空字符串、输出字符串长度、设置字符串、将字符串转换为大写字母、比较两个字符串是否相同等。
相关问题
请编写可执行的c++程序,实现自定义类似string的类(有以下不完整的类信息,请完善构造函数、析构函数、复制构造函数、输出函数等) class Mystring { private: char *text; public: Mystring(char *ch); //构造函数 //请完善 };
以下是完整的可执行的C++程序,实现了自定义类似string的类:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class Mystring {
private:
char *text;
public:
Mystring(char *ch); //构造函数
Mystring(const Mystring &str); //复制构造函数
~Mystring(); //析构函数
void print(); //输出函数
};
Mystring::Mystring(char *ch) {
int len = strlen(ch);
text = new char[len + 1];
strcpy(text, ch);
}
Mystring::Mystring(const Mystring &str) {
int len = strlen(str.text);
text = new char[len + 1];
strcpy(text, str.text);
}
Mystring::~Mystring() {
delete[] text;
}
void Mystring::print() {
cout << text << endl;
}
int main() {
Mystring str1("Hello, world!");
Mystring str2(str1);
str1.print();
str2.print();
return 0;
}
```
上述代码中,首先定义了Mystring类,并在类中实现了构造函数、复制构造函数、析构函数和输出函数。在主函数中,创建了两个Mystring对象str1和str2,分别用字符串字面值和另一个Mystring对象进行初始化,然后调用它们的print函数输出text成员变量的值。最后返回0表示程序正常结束。
基于char* 设计一个字符串类MyString,具有构造函数、析构函数、复制构造函数
下面是一个基于char*的字符串类MyString的实现,具有构造函数、析构函数、复制构造函数:
```c++
#include <cstring>
class MyString {
public:
// 构造函数
MyString(const char* str = nullptr) {
if (str == nullptr) {
m_data = new char[1];
m_data[0] = '\0';
} else {
int len = strlen(str);
m_data = new char[len + 1];
strcpy(m_data, str);
}
}
// 复制构造函数
MyString(const MyString& other) {
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
// 析构函数
~MyString() {
delete[] m_data;
}
private:
char* m_data;
};
```
这个类包含一个指向字符数组的指针成员变量m_data,它的长度由构造函数动态分配并初始化。构造函数根据输入的字符串参数判断是否为nullptr,如果是则分配长度为1的空字符数组,否则分配长度为字符串长度+1的数组,并将输入字符串复制到该数组中。复制构造函数则是根据另一个MyString对象的m_data成员变量的长度动态分配并初始化新的m_data数组,然后将原始对象的m_data数组复制到该数组中。析构函数释放了动态分配的m_data数组的内存。