値を 1 つずつ取得して 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 が続くのに対し、2 つの値の後に ^d が続くだけなのでしょうか?
ありがとう。