没有退出while循环与cin作为条件c ++

时间:2014-07-17 12:07:42

标签: c++ while-loop cin infinite

我知道这是一个常见问题,但如果不使用向量和ctrl + d / c,我找不到任何解决方案。我在使用cin获取未知量的整数时遇到了无限循环。即使在按下输入后,while循环也不会停止执行。非常感谢!

while(cin >> num)
{
    num--;
    sizeB = 0;
    setB[sizeB] = num;
    sizeB++;
}
cin.ignore();
cin.clear();

2 个答案:

答案 0 :(得分:2)

可以使用getline函数逐行获取数据,然后通过字符串流读取值:

#include <iostream>
#include <stdio.h>
#include <sstream>

using namespace std;

int main() {
  string line;
  while(getline(cin, line)) {
    stringstream str_stream(line);
    int num;
    while(str_stream >> num) {
      cout << "..." << num << "..." << endl;
    }
    cout << "----" << endl;
  }
}

答案 1 :(得分:0)

while采用bool论证。在您的代码中,cin >> num会返回istream&,转换为istream::operator bool()转换(如果流未关闭,我估计评估为true

读取一个字符串并将其转换为int,当字符串为空时中断:

while (1) {
   std::string theString;
   std::getline(std::cin, theString);
   if (theString.empty())
      break;
   int num= atoi(theString.c_str());
   ...
}