小明学习了面向对象程序设计后,以字符指针作为数据成员设计了一个字符串类STRING,请你帮他实现输入输出运算符的重载(>>、<<)。 要求: (1)输入时以输入Enter键作为结束标志,允许输入长度不超过80个字符的可以包含空格、可以为空串的字符序列。 (2)输出时,仅输出字符串中的有效字符。字符串输出结束后,不输出换行符。
时间: 2023-06-17 14:06:11 浏览: 95
好的,这里给出一个实现示例:
```c++
#include <iostream>
#include <cstring>
class STRING {
private:
char* str; // 字符指针作为数据成员
public:
STRING() {
str = new char[81]; // 构造函数中为字符指针分配空间
}
~STRING() {
delete[] str; // 析构函数中释放空间
}
friend std::istream& operator>>(std::istream& is, STRING& s) {
is.getline(s.str, 81); // 以Enter键作为结束标志,最多输入80个字符
return is;
}
friend std::ostream& operator<<(std::ostream& os, const STRING& s) {
os << s.str; // 输出字符串中的有效字符
return os;
}
};
int main() {
STRING s;
std::cin >> s;
std::cout << s;
return 0;
}
```
注意,这里用到了 `getline()` 函数来读取输入的字符串,`getline()` 可以读取包括空格在内的一整行字符串,以回车键作为结束标志。同时,我们还需要在构造函数中为字符指针分配存储空间,在析构函数中释放空间,以避免内存泄漏。最后,输出时需要注意只输出字符串中的有效字符。
阅读全文