我知道这是一个常见问题,但如果不使用向量和ctrl + d / c,我找不到任何解决方案。我在使用cin获取未知量的整数时遇到了无限循环。即使在按下输入后,while循环也不会停止执行。非常感谢!
while(cin >> num)
{
num--;
sizeB = 0;
setB[sizeB] = num;
sizeB++;
}
cin.ignore();
cin.clear();
答案 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());
...
}