getline()を用いてテキストファイルを読み込む単純なプログラムで、
読み込みの途中に頻繁にエラーが発生して、
rdstate()で調べると状態がfailbitなります。
これは頻発するものなのでしょうか?
毎回、発生する(テキストファイルの)行が異なるので、原因の見当がつかなくて困っています。
std::ifstream fp;
fp.open(filename.c_str(), std::ios::in);
std::string line;
while( !fp.eof() ){
getline( fp, line );
if( fp.fail() ){
printf("%d\n", fp.rdstate());
break;
}
}
-------------------------------------------------
テキストファイルの中身
13372 0.0 0.4938
13373 0.0 0.4934
13374 0.0 0.4928
13375 0.0 0.492133333333333
13376 0.0 0.491333333333333
13377 0.0 0.4904
13378 0.0 0.489333333333333
13379 0.0 0.488133333333333
13380 0.0 0.486866666666667
頻繁に発生する(=発生しないこともある)の?そりゃおかしい。
このソースでは毎回必ず発生するはずだが。
eof に達したときには必ず fail するので。
毎回必ず発生でなく、頻繁に(=発生しないこともある)のであれば原因が違う。
お返事ありがとうございます。
問題はまだ解決していないのですが、
説明がダメだったのと問題箇所の把握ができていませんでした。
正確には、困っているのは同じファイルを読んでいるにもかかわらず、
毎回異なる行数でwhileを抜けてしまうことです。
ファイルの最後eofに来ているようではなさそうです。
CreateThreadとCランタイムライブラリを併用しているのが原因でした。
お騒がせしました。
ツイート | ![]() |