C++でeof状態をリセットする方法があるのだろうか?C++でifstreamオブジェクトのファイルの終わりをリセットする
答えて
ファイルの場合は、任意の位置に検索できます。例えば、最初に巻き戻し:
std::ifstream infile("hello.txt");
while (infile.read(...)) { /*...*/ } // etc etc
infile.clear(); // clear fail and eof bits
infile.seekg(0, std::ios::beg); // back to the start!
をあなたはすでに終わりを過ぎて読めば、あなたは@Jerry棺が示唆するようclear()
でエラーフラグをリセットする必要があります。
私はこれを試しました。これは、 'clear'が* see *' seekg'の前に呼び出された場合にのみ機能します。こちらもご覧ください:http://cboard.cprogramming.com/cplusplus-programming/134024-so-how-do-i-get-ifstream-start-top-file-again.html – Frank
@フランク:ありがとう、編集済み。私はあなたが失敗したストリームでは全く動作できないと思います。 –
後半の読者の場合:[cppリファレンス](http://en.cppreference.com/w/cpp/io/basic_istream/seekg)によると、C++ 11以降は削除する必要はありません。 – Aconcagua
おそらくiostreamを意味します。この場合、ストリームのclear()
が処理を行う必要があります。
私は上記の答えに同意しますが、今夜同じ問題に遭遇しました。だから私はもう少しチュートリアルで、プロセスの各段階でストリームの位置を示すコードをいくつか投稿すると思った。私はおそらくここにチェックしておくべきだった...前に...私は1時間を自分で考え出した。
ifstream ifs("alpha.dat"); //open a file
if(!ifs) throw runtime_error("unable to open table file");
while(getline(ifs, line)){
//......///
}
//reset the stream for another pass
int pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: -1 tellg() failed because the stream failed
ifs.clear();
pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: 7742'ish (aka the end of the file)
ifs.seekg(0);
pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: 0 and ready for action
//stream is ready for another pass
while(getline(ifs, line) { //...// }
- 1. Ifstream - EOFビットをリセットする
- 2. ifstream.eof() - ファイルの終わりが実際の終わりに達するまで
- 3. Cプログラミング - ファイルの終わりの1の補数
- 4. for_eachで終わりに終わり
- 5. 改行でファイルの終わりを検出するには?
- 6. Cで「ファイルの終わり」とは何を意味していますか?
- 7. C++ ifstreamはファイルを開けません
- 8. 既存のFlowDocument/Paragraphオブジェクトの代わりに書式設定をリセットする
- 9. リストタイトル終わり最後の単語で終わり
- 10. C#のテキストボックスの終わりにユニットを追加する方法
- 11. C++文字列ストリームの終わりを取得するには?
- 12. NSPredicateが複数のファイルで終わる
- 13. ファイルの終わりをシミュレートする方法
- 14. pyserial python3のファイルの終わりを検出します
- 15. 一日の終わりにタイマーを自動的にリセットするにはどうすればいいですか?
- 16. Devits PUTの代わりにパスワードのリセット
- 17. ファイル/ ifstreamの双方向イテレータ
- 18. BufferedReader readLine()問題:ファイルの終わりと空の戻り行を検出する
- 19. C++のifstream :: read()とCの配列
- 20. ループ内でファイルの内容をifstreamするための変数の割り当て方法。 (C++)
- 21. C++ ifstream文字列
- 22. ファイルの終わりまでをistream_iteratorとistreamのオーバーロードで読み取る
- 23. C++、ifstreamを使用してファイルを読み取る
- 24. コントローラの終わりにレール
- 25. 構造体の終わりのC配列の初期化
- 26. C - 配列の終わりを超えた要素
- 27. スコープ検索のRAILS - 予期せぬ終わりのキーワードの終わり
- 28. 301 .cfmで終わるすべてのファイルをリダイレクト
- 29. IOSは終わり
- 30. ファイルの終わりの後で止まるはずのループに詰まったC
ifstreamファイル。 –