6-1 CString字符串类
分数 20
作者 谢颂华
单位 武汉理工大学
定义一个字符串类CString,使其至少包含内容(contents)和长度(length)两个数据成员,要求定义以下成员函数:构造函数、显示字符串函数display()、求字符串长度函数getlength()和字符串连接函数append()。
CString类定义:
class CString //字符串类声明
{ int length; char *contents;
public: CString();//不带参构造函数CString(const char *str); //带参构造函数void display() const;// 显示字符串函void getlength();//求字符串长度函void append(const char *tail); //字符串连接函数
};
/* 请在这里填写答案 */
裁判测试程序样例:
#include <iostream>
#include <string>
using namespace std;
int main()
{ char a[10],b[10],c[10];cin>>a>>b>>c;CString s1,s2(a);s1.display();s2.display();s2.getlength();CString s3(b);s3.append(c);cout<<"+";s3.display(); return 0;
}
输入样例:
we
are
student
输出样例:
string is empty
string:we
length:2
+string:arestudent
CString::CString() {length = 0;contents = nullptr;
}// 带参构造函数的类外实现
CString::CString(const char *str) {if (str == nullptr) {length = 0;contents = nullptr;} else {length = static_cast<int>(strlen(str));contents = new char[length + 1];strcpy(contents, str);}
}// 显示字符串函数的类外实现
void CString::display() const {if (length == 0) {cout << "string is empty" << endl;} else {cout << "string:" << contents << endl;}
}// 求字符串长度函数的类外实现
void CString::getlength() {cout<<"length:"<<length<<endl;
}// 字符串连接函数的类外实现
void CString::append(const char *tail) {int new_length = length + static_cast<int>(strlen(tail));char *new_contents = new char[new_length + 1];strcpy(new_contents, contents);strcat(new_contents, tail);delete[] contents;contents = new_contents;length = new_length;
}