gpt4 book ai didi

c++ - 使用来自文件和手册的 cin.get 的输入值差异

转载 作者:行者123 更新时间:2023-11-30 04:21:20 24 4
gpt4 key购买 nike

我正在编写一些代码,需要一个一个地获取值并将它们存储到 2D int 数组中,并且在从文件中获取值并手动输入它们时存在差异。它看起来像这样:

int ar[9][9];
while(!cin.eof()){
for(int i=0; i<9; i++)
for(int j=0; j<9; j++)
{
cin.get(temp);
ar[i][j] = temp -48;
}
}

我会从运行它的终端输入输入

./prog.out < inp.txt

并为 ar[0][1] 之类的随机值获取 -38 的值,但是当我键入时我会得到正确的值

./prog.out
12345678 ^d

打印 ar[0][1] 时得到 2,这是正确的。为什么这段代码会有不同的行为?是不是因为文件是完整的 81 个字符,后跟\n 和 eof,而只有几个值后跟 ^d?

谢谢。

最佳答案

您没有在正确的时间检查 eof - 它是在尝试读取值时设置的,而不是事先设置的 - 所以行为有点随机。而且,您假设不在 eof 意味着您可以读取 81 个值...您怎么知道您不是距 eof 一个换行符?而且您没有检查 cin.get()....

是否成功

简单推荐

for(...)
for(...)
if (cin.get(temp))
ar[i][j] = temp - '0';
else
{
std::cerr << "insufficient input\n";
exit(1);
}

关于c++ - 使用来自文件和手册的 cin.get 的输入值差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556687/

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