我是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”* –