"设计一个自定义的string类并实现其功能,包括构造函数、赋值操作、成员函数等,以及在实际应用中统计文本文件中指定子串的单词并按照字典序输出。"
在这个C++作业设计中,目标是创建一个名为`tstring`的类,该类模仿了C++标准库中的`std::string`类,提供了基本的字符串操作。以下是这个类的关键组成部分:
1. **构造函数**:
- 无参构造函数:初始化字符串为空。
- C风格字符串构造函数:接收一个C风格字符串`char*`,将其转换为类内的字符串对象。
- 复制构造函数:接受一个`tstring`对象,进行深拷贝,确保字符串内容被正确复制。
2. **成员函数**:
- 下标访问:通过`sub`函数获取字符串中的字符,与`std::string`的`operator[]`类似。
- 子串查找:`search`函数用于查找子串是否存在于字符串中,返回1表示找到,0表示未找到。
- 获取C风格字符串:`c()`函数返回指向C风格字符串的指针。
- 获取字符串长度:`len()`函数返回字符串的长度。
- 字符串比较:`comp`函数实现了字符串间的比较,返回值1表示当前对象大于参数字符串,-1表示小于,0表示相等。
- 打印字符串:`print`函数用于在控制台输出字符串内容。
3. **测试程序**:
- 程序读取名为"a.txt"的文本文件,查找其中包含特定子串的单词。
- 使用数组`str1`存储文件中的单词,然后将它们转换为`tstring`对象存储在`str2`数组中。
- 使用额外的数组`str3`来存储不重复的单词,并进行字典序排序。
- `str4`用于临时存储子串匹配的单词。
- 搜索过程中,使用`search`函数检查每个单词是否包含子串,若包含则添加到`str3`中。
- 最后,遍历`str3`并打印出所有找到的单词。
这个设计不仅要求实现基本的字符串操作,还要求在实际场景中应用自定义的`tstring`类,这有助于理解类的设计、内存管理以及字符串操作的实现原理。同时,通过测试程序,学生可以学习到文件输入输出、字符串处理以及算法(如字典序排序)等相关知识。