プロが教えるわが家の防犯対策術!

こんにちは。
よろしくお願いいたします。

ifstream で定義したファイルを open し、一端 close した後再度 open しようとすると、エラーとなります。
何が原因かわかりますでしょうか?
ちなみに、インファイル.txt は何も記載していないので、下記ソースのwhileループ内には入りません。
が、whileループが有ればエラー(メッセージ:3103)が発生し、
無ければ、エラーは発生しません。

環境:XP home & ボーランドC++Builder6.0
テストしたソース:
void __fastcall TForm1::Button6Click(TObject *Sender)
{
ifstreamInFile;
ofstreamOutFile;
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"); // ここでメッセージが出力されます。
}

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/13 23:03

InFile.close();


InFile.clear();
InFile.open("インファイル.txt");

これでどうですか?
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/06/13 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!