编写完整的C++语言程序完成下列实验任务:定义顺序存储的串类,完成下列各功能(要求不能使用strcmp、strcpy等等库函数来直接实现): 1、求子串。返回从主串s的第i个字符开始长为len的子串。 主串s的值、i、len等值均自定。要求有结果输出。
时间: 2024-10-25 21:04:16 浏览: 34
在C++中,为了实现这个任务,我们将创建一个简单的`String`类,包含一个动态数组来存储字符串,并提供求子串的功能。由于不允许使用`strcmp`、`strcpy`等库函数,我们手动编写一些辅助函数来实现字符串操作。下面是一个基本的实现:
```cpp
#include <iostream>
#include <vector>
class String {
private:
std::vector<char> data;
size_t length;
public:
// 构造函数
String(const char* str) : length(strlen(str)) {
data.resize(length);
for (size_t i = 0; i < length; ++i)
data[i] = str[i];
}
// 求子串
String substr(size_t start, size_t len) const {
if (start >= length || len == 0 || start + len > length)
return String("");
String subStr;
subStr.length = len;
for (size_t i = 0; i < len; ++i)
subStr.data[i] = data[start + i];
return subStr;
}
// 打印字符串
void print() const {
for (const char c : data)
std::cout << c;
std::cout << std::endl;
}
};
int main() {
String s("Hello, World!");
size_t i = 7, len = 5;
String sub = s.substr(i, len);
sub.print(); // 输出 "World"
return 0;
}
```
在这个例子中,`substr`方法首先检查子串的索引和长度是否合理,然后创建一个新的`String`对象并复制指定的子串。`print`方法用于显示整个字符串。
运行此程序,它将输出子串"World"。
阅读全文