我是C++新手。陷入現有代碼庫的一部分,我需要確定是否存在兩個文件。如果其中任何一個存在或兩者都存在,我們需要設置一個標誌。檢查給定的多個文件是否存在
的片段是這樣的:現在
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
?
我可能會問一個愚蠢的問題。提前致謝!
。 –
我很困惑。如果第一個文件存在,標誌應該*不*設置爲false。 – Carcigenicate
除了初始化之外,您只能將'Flag'設置爲'true'。所以如果任何一個文件存在,「Flag」將是「true」。你從來沒有在任何if中將'Flag'設置爲'false',這與你的陳述相反*「第一個if如果工作正常並且flag設置爲false」* –