我已经尝试了这里列出的一系列方法,但没有一个有效。它总是在等待更多的输入。
我试过 while(std::getline(std::cin, line))
和下面的方法,似乎没有任何效果:
#include <iostream>
#include <sstream>
using namespace std;
int main(){
long length = 1UL<<32;
int array[length];
// memset(array, 0, (length-1) * sizeof(int));
for(int i = 0; i < length; i++)
array[i] = 0;
string line;
int num;
while(!cin.eof()){
getline(cin,line);
stringstream ss(line);
ss >>num;
array[num]++;
}
for(int i = 0; i < length; i++)
if(array[i]){
cout << i << ": ";
cout << array[i] << endl;
}
}
最佳答案
首先,不要使用std::cin.eof()
来控制循环!它不起作用。此外,您始终需要在输入后检查输入是否成功。
就是说,要终止输入,您需要输入适当的文件结尾字符,可能在行的开头(它的工作方式在某种程度上完全取决于系统、某些设置等)。在 Windows 上,您将使用 Ctrl-Z,在 UNIX 上,您将使用 Ctrl-D。
关于c++ - 如何终止从cin读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19991729/