【发布时间】:2019-03-22 03:33:20
【问题描述】:
在直接从命令行输入文件后,我正在尝试使用 cin 来读取 int。这是我的文件:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
它们是 81 个数字。这是有问题的代码:
#include <iostream>
using namespace std;
int main()
{
int array[81];
for(int i = 0; i < 81; i++)
cin >> array[i];
int x = 999;
cin >> x;
cout << x << endl;
return 0;
}
我尝试这样输入文件:
./a.out < myfile
但是,cin >> 不会停止并直接打印 999 作为输出。我试过cin.clear() 和cin.ignore(INT_MAX, 'n') 但它们都不起作用。然后我想输入这样的文件有什么特别之处,所以我在运行 a.out 后输入所有 81 个数字(不使用< myfile 输入),如果我这样做,程序将继续输入并且永远不会停止或打印。
我不知道我遇到了什么......?
【问题讨论】:
-
ignore的形式是std::cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');,包括<limits>。