C++ 从文件读入后数组的第一个奇怪元素

C++ 从文件读入后数组的第一个奇怪元素,c++,arrays,C++,Arrays,我在一个sodoku板上读一个文本文件。电路板由9行9位数字表示,如下所示: 594632817 123478569 678159234 215346798 346897125 789215346 437561982 851924673 962783451 编辑 以下是将while条件更改为(input>>char)时的结果: 以读取字符的形式输出: 96212486 71931369 48728254 35185947 67350 printArray的输出: 962124867 1931

我在一个sodoku板上读一个文本文件。电路板由9行9位数字表示,如下所示:

594632817
123478569
678159234
215346798
346897125
789215346
437561982
851924673
962783451
编辑

以下是将while条件更改为(input>>char)时的结果:

以读取字符的形式输出:

96212486
71931369
48728254
35185947
67350
printArray的输出:

962124867
193136948
728254351
859476735

�$%w��
����QȿȔ
L�`g�Pw
���w�
这是while(!input.eof())的输出:

结束编辑

问题是,当我将每个数字放入多维数组时,[0][0]处的元素显示为带阴影的问号(用g++编译)。只有当我打印出数组的内容时,问题才会出现,读取的数据看起来很好。对于它的工作,如果我不能>ch,也会发生这种情况) { //ch=input.get(); 如果(ch!='\n') { 会议室(8) j=0; 如果(i>8) i=0; 计数++; 如果(计数%10==0)
这样做可以读两遍
ch

删除
ch=input.get();
,您将正确读取每个数字

while (input >> ch)
{
    ch = input.get();
    ...
}

再次,考虑下面的更改条件以确保正确<代码> EntL/<代码>放置< /P>

if (count % 10 == 0)
    cout << endl;
if(计数%10==0)

cout
在[0][0]处的元素在其出现的位置显示为一个带阴影的问号
g++
不可视化变量。当我可以时,它显示为一个外观奇怪的带阴影的问号字符。奇怪字符的十六进制或十进制值是什么?您测试的EOF不正确。搜索堆栈溢出以查找“c++文件结尾”。请尝试
while(input>>ch)
。实际上,while循环修复程序不起作用。它为我提供了正确的第一个元素,但数组的其余部分变南了。注释中也提供了此解决方案。谢谢。我仍然想知道为什么eof终止条件会影响输出。
while (input >> ch)
{
    ch = input.get();
    ...
}
if (count % 10 == 0)
    cout << endl;
if (count % 9 == 0)
    cout << endl;