私はC++を初めてお使いです。既存のコードベースの一部に詰まっています。ここでは、2つのファイルが存在するかどうかを特定する必要があります。これらのいずれかが存在する場合、またはその両方が存在する場合は、フラグを設定する必要があります。複数のファイルが存在するか確認してください
スニペットは次のようになります。
今bool Flag = false;
string string_one, string_two;
string_one = "/blah/blah/bhah1.ext";
string_two = "/blah/blah/bhah2.ext";
std::ifstream fs1(string_one.c_str());
if ((bool)fs1 == false)
Flag = true;
std::ifstream fs2(string_two.c_str());
if ((bool)fs2 == false)
Flag = true;
、問題は次のとおりです。
string_one
が既存のファイルであれば、最初のif
が正常に動作しているとフラグの値がまだ(変更取得されていませんfalse
)。しかし、string_two
も存在すれば、何とかFlag
の値がtrue
に設定されています。 Ranデバッガを起動して、最後に制御がif ((bool)fs2 == false)
になることがわかりました。
std::ifstream
を2回使用していますか?
私はたぶん愚かな質問をします。前もって感謝します!
ifstreamを別のストリーム(fs1とfs2)として使用しているため、ifstreamを2回使用することは問題にならないはずです。 –
私は混乱しています。最初のファイルが存在する場合、フラグをfalseに設定してはなりません。 – Carcigenicate
初期化時以外は 'フラグ'を 'true'に設定するだけです。したがって、いずれかのファイルが存在する場合、 'Flag'は' true'になります。 *「最初のifが正常に動作し、Flagがfalseに設定されている」という文に反して、 'if'に' Flag'を 'false'に設定することはありません* –