gpt4 book ai didi

c++ - 文件输入后cin不会停止

转载 作者:行者123 更新时间:2023-11-28 01:22:53 24 4
gpt4 key购买 nike

我试图在直接从命令行输入文件后使用 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 输入),如果我这样做,程序将继续接受输入并且永不停止或打印。

我不知道我遇到了什么......?

最佳答案

cin >> x;

失败,您的代码无法检测到它。使用:

if ( cin >> x )
{
// Reading to x was successful. Use it.
cout << x << endl;
}
else
{
// Reading to x was not successful. Figure out what to do.
}

作为一般原则,检查每个 IO 调用的状态。准备好在每次这样的调用之后处理失败。在确认调用成功之前,不要使用您希望从 IO 操作中获取的任何数据。从长远来看,这将为您省去很多心痛。

关于c++ - 文件输入后cin不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com