我有一个功能,基本上可以从该位置打开文件,并将文件中可用的值解析为源代码的其他位置所使用的某种结构。 这里的问题是即使文件在上述位置不可用,ifstream :: isopen也将返回true 。
我没有使用构造函数,而是尝试使用ifstream :: open显式打开文件,但不幸的是,它没有用。
bool ClassName::loadRecordingConfiguration()
{
std::string filepathConfig = getDataFolder() + std::string("\\file.json");
std::ifstream jsonFile(filepathConfig.c_str());
if (jsonFile.is_open()) {
//This part is executed when getDataFolder failed to return the folder path and file.json is not available
//This part is also executed when getDataFolder returns correct folder path and file.json is available
}
}
//Returns the folder path if SomeCondition is satisfied
std::string ClassName::getDataFolder()
{
if (SomeCondition) {
return std::string(SomeFilePath);
}
return std::string("");
}
由于文件夹路径不正确,我希望仅当我将somFilePath位置中放置了file.json时,它才能工作。
答案 0 :(得分:0)
尝试使用operator bool
(if (jsonFile){ ... }
)或检查流标志(无效位,故障位)。打开文件是特定于操作系统的操作,ifstream::is_open()
仅检查它是否成功创建了文件句柄。
在任何情况下,最好先检查它是否与某些OS API一起出现(例如,对于Windows,PathFileExistsA)。