使用运算符>>时的空格和特定字符

Whitespace and specific characters when using operator >>

本文关键字:gt 字符 空格 运算符      更新时间:2023-10-16

我有一个包含 char 数组的自定义字符串类,我需要重载此类的>> 运算符。对于我的生活,我不知道如何做两件事。

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 循环中尝试的字符进行比较。

所以,我的问题是,如何在遇到指定字符之前读取输入,以及如何在使用>>时包含所有空格?

字符串

/字符输入的全局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, ';');
}