テキストファイルをwhileループで読み出すと最終行が重複する謎について解けたので報告する。
ようするに、whileループは、do-while的に使え、ということです。
つまり、ファイルの読み込みにおいてはいきなりwhile()を呼び出してはいけません。
先に一度ファイル読み込みを行っておく必要がある、ということでした。
こうすると、期待したとおりに動作します。
具体的には、
(数字がかかれたテキストファイルを読み込む場合)
"somefile.txt"の中身。
0.0
1.0
2.0
3.0
--------------------------------------------------------------------------------------------
#include<fstream>
#include<iostream>
int main(){
ifstream fin("somefile.txt");
//エラーチェックなどは省略。
double buf;
fin >> buf; //この一行をここで入れるのがポイントです!!
while(!fin.eof()){
fin >> buf;
cout << buf;
}
return 0;
}
--------------------------------------------------------------------------------------------
結果はテキストファイルと同じです。(あたりまえの動作がやっと実現)。
こうやっておけばもう怖いものはない!!
なお、eof()の括弧を忘れないように!ないとコンパイル時に難しいこと言われます。
よかったよかった。
0 件のコメント:
コメントを投稿