2012-01-11 15 views
2

1つのテキストファイルをバイナリとして読み込み、console-appでレンダリングしようとしています。 「私は、テキストファイルに持っていないことを、私は、このようなシンボルを持っているのはなぜ?」:私は疑問だhttp://pastebin.com/gubYpAVZ
C++テキストファイルをバイナリとして読み込んでコンソールに表示


は、私は次の結果を持っていますメモ帳で開くと、 "Hello World!"だけが表示されます。そして、もう...他の記号は何ですか?ここで

コードです:

ifstream in("C:\\dev\\1.txt", ios::in | ios::binary);  
list<int> mylist1; 
list<int>::iterator it; 


while(!in.eof()) 
{ 
    mylist1.push_back(in.get()); 
}; 

for(it = mylist1.begin(); it != mylist1.end(); it++) 
{ 
    cout << *it << " -> " << (char)*it << endl; 
}; 


in.close(); 

よろしく、

+1

おっと...、まだテキストの書式を設定するホット学んでいない、一般的なタイプがある:リスト< int > –

+1

は、ちょうどあなたが全体のことについて少し混乱しているようだ –

+0

4つのスペースでコードをインデント。最初のfor-loopは非常に奇妙に見えますが、なぜそれも持っていますか? –

答えて

4

一つの可能​​性は、文字ごとに複数のバイトを持っている可能性のある、ファイルにUnicode文字が含まれていることかもしれません。また、最初の文字の値の一部は、BOM (byte order mark)の一部であるように見えます。特に、239、187、191(0xef、0xbb、0xbf)は、UTF-8データを示すようです。リストがどこにある

+2

readループを詳しく見てください。 –

+2

@AndreasMagnusson:私はおそらく明らかに欠けているでしょう...しかし、あなたが何を指しているのかわからない。ループは間違いなくすべて乱されています(すべての文字が読み込まれるたびに文字セット全体が表示されますが、それでもBOMを取得しているようです)。 –

+1

コードが変更されました。うまくいきます!ありがとうございます(更新版)、私は最初の3つの記号を持っています: 239 - >я 187 - >╗ 191 - > –

関連する問題