我发现很难绕过stringstream
的工作。为什么下面的代码中的第二个while循环不起作用?如果流对象在第一个while循环结束时被清空,是否有任何变通办法将其恢复到初始状态?
// input is string of numbers separated by spaces (eg. "22 1 2 4")
std::string input;
std::getline(std::cin, input);
stringstream stream (input);
// print individual numbers
while (stream >> n)
{
cout << n << endl;
}
// print individual numbers again
while (stream >> n)
{
cout << n << endl;
}
最佳答案
stringstream
是istream
的子类,因此stream >> n
(std::istream::operator>>
)返回reference to istream
stream
可以转换为bool
(std::ios::operator bool
):当它不再有任何数据(到达文件末尾)时,它将转换为false
您已经在第一个循环中完成了stream
的读取-不再包含任何数据。
您需要自己存储值,然后再使用它们-不允许复制流(这对它们实际上没有意义)-Why copying stringstream is not allowed?
关于c++ - 多次使用stringstream对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53336255/