需要帮助在 c++ 中使用字符串流在一行中输入多个整数

Need help inputing multiple integers in one line with stringstream in c++

本文关键字:一行 输入 整数 c++ 帮助 字符串      更新时间:2023-10-16

我想做一个程序,在一行中输入多个整数,而不知道该整数本身的数量。所以我想我会使用 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;
}

虽然@nosid的答案确实有效,但在这种情况下使用 std::getline() 是不明智的,因为直接使用提取器可以更轻松地完成此任务:

while (std::cin >> i)
{
    std::cout << i << std::endl;
}