我想制作一个在一行中输入多个整数而又不知道该整数本身数目的程序。因此,我认为我将使用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的无限循环。这怎么可能?

最佳答案

在每次迭代中都对表达式stringstream(zzz) >> i求值。这意味着每次检查循环条件时,您都将创建一个具有与以前相同内容的新流。

如果将字符串流移到循环之前,则它应能按预期工作:

getline(cin,zzz);
stringstream ss(zzz);
while(ss>> i)
{
    cout << i<< endl;
}

关于c++ - 需要帮助在C++中使用stringstream在一行中输入多个整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22769032/

10-09 13:43