0

以下のソースコードを書きました。

ifstream leggiFile;
leggiFile.open("Questions.txt",ios::in);

if (!leggiFile.good())
{
  cerr << "\n\n\n\tErrore during file opening Questions.txt\n\n\n" << endl;
}
else
{
    // ...
};

leggiFile.close();
system("pause");

ここで、2 番目のファイルを操作するために同じオブジェクトを使用したいと考えています。

leggiFile.open("Answers.txt",ios::in);

i=0;
if(!leggiFile.good())
{
  cerr << "\n\n\n\tError during opening of file answers.txt\n\n\n" << endl;
}
else
{
    // ...
}

問題: 2 回目にファイルを開くことができず、エラー メッセージが表示される。なんで?解決策を教えてください。

4

2 に答える 2

2

などの 1 つ以上のエラー フラグを設定する作業をストリームに対して行った可能性がありますeofbit

ストリームを閉じてもエラー フラグはクリアされないため、手動で行う必要があります。leggiFile.clear();閉じてから電話してください。

ただし、C++11 以降、これは によって自動的に行われますopen()。すでに C++11 コンパイラを使用している場合、問題は別の場所にあります (コードが十分に示されていないため、どこにあるかはわかりません)。

于 2013-04-05T18:44:33.667 に答える
0

singletonロギングまたは任意のファイルへの複数アクセスの設計パターンを学習します。コードがファイルなどのリソースを待機するように、Mutex ロックを使用することもできます。ただし、同じファイルを同時に使用するのは賢明ではありません。コードのライフサイクルのためにファイルを開くことができます。それは問題ではありません。

于 2013-04-05T19:12:36.530 に答える