避免使用运算符>>在空白处打破输入

时间:2013-07-14 17:14:18

标签: c++ string operator-overloading

我正在重载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,但问题仍然存在。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:5)

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

std::getline(in, str);