私は本当に奇妙な問題に遭遇しました。win7ラップトップとubuntuマシンで再現できます。
次のような C++ プログラムがあります。
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 9; i++) {
string line;
getline(cin, line);
stringstream ss(line);
for (int j = 0; j < 9; j++) {
int p = 8;
ss >> p;
cout << p;
}
cout << endl;
}
return 0;
}
今、私がそれをコンパイルして実行すると、次のもの./a.out < test.txt
がtext.txt
含まれます:
1 2 3 4 5 6 7 8 9
2 2 3 4 5 6 7 8 9
3 2 3 4 5 6 7 8 9
4 2 3 4 5 6 7 8 9
5 2 3 4 5 6 7 8 9
6 2 3 4 5 6 7 8 9
7 2 3 4 5 6 7 8 9
8 2 3 4 5 6 7 8 9
9 2 3 4 5 6 7 8 9
出力されます(スペースなし):
8 8 8 8 8 8 8 8 8
2 2 3 4 5 6 7 8 9
3 2 3 4 5 6 7 8 9
4 2 3 4 5 6 7 8 9
5 2 3 4 5 6 7 8 9
6 2 3 4 5 6 7 8 9
7 2 3 4 5 6 7 8 9
8 2 3 4 5 6 7 8 9
9 2 3 4 5 6 7 8 9
なぜ最初の行が間違っているのですか?ループの最初の行も読んでみました。また、次のように置き換えるss > p
とcin > p
、8 でいっぱいの出力テーブルが得られます。
これでは意味がありません!!
わかりました、皆さんは正しかったです。私の入力ファイルの最初の文字としていくつかの奇妙なもの:
od -c test.txt
0000000 357 273 277 2 0 5 0 0 7 0
0000020 0 6 \n 4 0 0 9 6 0
0000040 0 2 0 \n 0 0 0 0 8