我有一个包含char数组的自定义String类,我需要重载>>这门课程的操作员。对于我的生活,我无法弄清楚如何做两件事。
1 - 读取用户输入,直到;到达
2 - 包含用户输入的空白
我不能使用命名空间或c ++的内置字符串。不幸的是,排除了使用getline和任何方便的查找功能(我认为它确实如此?)。我试过的一些事情:
std::istream& operator >> (std::istream& output, String& input) {
output >> input.str;
return output;}
这可以工作,但直到第一个空格,之后它才停止读取用户输入。
std::istream& operator >> (std::istream& output, String& input) {
while (output != ';') {
output >> input.str;
}
return output;}
一个istream我猜不等同于用户输入,所以你无法将它与我在while循环中尝试过的char进行比较。
所以,我的问题是,在遇到指定字符之前,如何读取输入,以及在使用>>时如何包含所有空格? ?
答案 0 :(得分:0)
字符串/字符输入的全局operator>>
在遇到空格时会停止读取,因此根据全局operator>>
实现自定义operator>>
是不值得的。
您排除了对std::getline()
的使用,但您可以使用std::istream::getline()
。与std::getline()
类似,它还有一个可选的delim
参数(默认为'\n'
),并且会读取字符 - 包括空格 - 直到达到分隔符或EOF。
std::istream& operator >> (std::istream& input, String& output)
{
return input.getline(output.str, yourmaxstrsize, ';');
}