• ベストアンサー

ifstream/ofstream について

こんにちは。 よろしくお願いいたします。 ifstream で定義したファイルを open し、一端 close した後再度 open しようとすると、エラーとなります。 何が原因かわかりますでしょうか? ちなみに、インファイル.txt は何も記載していないので、下記ソースのwhileループ内には入りません。 が、whileループが有ればエラー(メッセージ:3103)が発生し、 無ければ、エラーは発生しません。 環境:XP home & ボーランドC++Builder6.0 テストしたソース: void __fastcall TForm1::Button6Click(TObject *Sender) { ifstream InFile; ofstream OutFile; char cBuf[255]; InFile.open("インファイル.txt"); if (!InFile) ShowMessage("3101"); OutFile.open("アウトファイル.txt"); if (!OutFile) ShowMessage("3002"); while (!InFile.getline(cBuf, sizeof(cBuf)).eof()) { OutFile << cBuf << endl; } // このwhileループが無ければ、エラーは発生しません。 OutFile.close(); InFile.close(); InFile.open("インファイル.txt"); if (!InFile) ShowMessage("3103"); // ここでメッセージが出力されます。 }

質問者が選んだベストアンサー

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

ファイルを再openする前に、clearメソッドを呼んでみるといかがでしょう。

chie_tanom
質問者

お礼

こんにちは。 早速の回答、ありがとうございます。 うまくいきました。

その他の回答 (1)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

InFile.close(); InFile.clear(); InFile.open("インファイル.txt"); これでどうですか?

chie_tanom
質問者

お礼

こんにちは。 ありがとうございます。 うまくいきました。

関連するQ&A