需要帮助在c ++中使用stringstream在一行中输入多个整数

时间:2014-03-31 18:10:54

标签: c++ c++11

我想创建一个程序,在一行中输入多个整数,而不知道该整数本身的数量。所以我认为我会使用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.这怎么可能发生?

2 个答案:

答案 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;
}