while 循环中的迭代在不接受输入的情况下运行和结束?

Iteration in while loop runs and ends without taking inputs?

我想根据当前输入拆分字符串并将其存储在 result 双端队列中,然后再次执行此操作 while (count-- > 0)

count = 3 在这种情况下。

输入字符串:abc def ghi

   while (count-- > 0){
    cout << " start of while loop" << endl;
    deque<string> result;
    string str2;
    cin >> str2;
    istringstream iss(str2);
    for(string s; iss >> s; ){
      result.push_back(s);
    } 
    cout << "result.size() " << result.size() << endl;
    }
   }

问题: 结果大小仍然为 1,while 循环自动运行 3 次。

Todo : 结果大小应该是 3 in 1 iteration

输出:

start of while loop
abc def ghi
result.size() 1
start of while loop
result.size() 1
start of while loop     
result.size() 1

我本应该能够输入 3 次,但是 while 循环自动运行了 3 次而没有输入并结束。 为什么会这样?

而不是这个:

  while (count-- > 0){
    cout << " start of while loop" << endl;
    deque<string> result;  // result created inside loop

你想要这个

  deque<string> result; // result created outside loop
  while (count-- > 0){
    cout << " start of while loop" << endl;

否则,每次循环迭代都会重新创建结果。

此外,听起来您希望将 abc def ghi 视为单个输入,但 cin >> str2 读取的是一个词,而不是一行。要读取一行,请改用 getline

getline(cin,str2);