我想创建一个程序,在一行中输入多个整数,而不知道该整数本身的数量。所以我认为我会使用sstream,但是因为这是我第一次使用sstream而被卡住了。
string zzz;
int i=0,current;
int main()
{
stringstream ss;
getline(cin,zzz);
while(stringstream(zzz)>> i)
{
cout << i<< endl;
}
}
例如,如果我输入123 456,将导致无限循环的打印123.这怎么可能发生?
答案 0 :(得分:3)
在每次迭代中计算表达式stringstream(zzz) >> i
。这意味着每次检查循环条件时,您将创建一个与之前内容相同的新流。
如果在循环之前移动 stringstream ,它应该按预期工作:
getline(cin,zzz);
stringstream ss(zzz);
while(ss>> i)
{
cout << i<< endl;
}
答案 1 :(得分:1)
虽然@nosid的答案确实有效,但在这种情况下使用std::getline()
是不明智的,因为直接使用提取器可以更简单地完成这项任务:
while (std::cin >> i)
{
std::cout << i << std::endl;
}