私はC++に比較的慣れていないので、ifstreamにいくつか問題があります。私がやりたいのはファイルをバイトごとに読み取ることだけですが、読み取りは常にファイルの途中で失敗します。私のコード:
void read(ifstream&f)
{
unsigned char b;
for (int i=0;;++i)
{
if(!f.good())
{
cout<<endl<<"error at: "<<i;
return;
}
f>>b; // b=f.get(); and f.read(&b, 1); doesnt work either
cout<<b;
/* ... */
}
}
最初の数百バイトを正しく読み取り、残りのファイルはスキップされます。バッファリングについて何か問題がありますか?私は何を間違えましたか?
編集:
原因となる可能性のあるものを見つけました。ファイルではCRLF行末(2バイト)を使用していますが、上記のすべてのメソッドはLFのみを返すため、各行の終わりでiは1つだけ増加しますが、ファイル内の2バイト。だから私の質問は:どうすればCRとLFの両方を別々に取得できますか?