避免运算符>>在空格处中断输入

Avoid operator>> to break input at whitespaces

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

我正在重载operator>>函数。它应该在输入中获取一个字符串,需要一些空格,在空格处分解字符串并执行与主题无关的其他操作。

我有这个代码:

std::istream& operator>>(std::istream &in, Foo &f) {
    std::string str;
    in >> str;
    std::cout << "str = " << str << std::endl; // for testing
    // ...
    return in;
}

假设把这个字符串(一个复数(作为输入:

3 + 2i

std::cout函数仅打印3 。我试图把旗帜放在std::noskipws,但问题仍然存在。

有什么办法解决这个问题吗?

使用std::getline函数读取完整的输入行:

std::getline(in, str);