我把我的头发拉到这里有一个奇怪的问题,这个问题似乎是自己出现的,我现在对发生的事情一头雾水。
我编译的 C++ 应用程序无法再找到名称中包含空格的文件,许多其他依赖于处理文件的功能被破坏并抛出异常。它在我安装 vscode 并尝试使用 GCC/G++ 编译我的应用程序后突然开始发生
我现在已经删除了 vscode,删除了我的构建目录,cmake 缓存,重新启动了计算机等,但由于某种原因我的代码仍然无法正常工作。
更多信息:
我在 Mac OS Ventura 13.2.1 上使用 Apple M2 Max.
任何帮助将不胜感激
我已经尝试了上面概述的步骤,以及重新启动、重新安装 xcode、删除 GCC/G++、检查环境变量、链接器路径。我还尝试将 C++ 标准更改为 20,我的应用程序编译正常,但错误仍然存在。
这里是现在失败的代码:(注意 Path 是一个 std::filesystem::path,并且 exists() 函数通过得很好,我在它开始中断后添加了用于调试目的的异常)
info() << "Reading " << path.string();
if (!exists(path)) {
log_error() << "Could not find file " << path.string();
throw runtime_error("Could not read file " + path.string());
}
std::ifstream infile;
// Enable exceptions for ifstream
infile.exceptions(std::ifstream::failbit | std::ifstream::badbit);
try {
infile.open(path.string());
} catch (const std::ifstream::failure& e) {
log_error() << "Error reading the file " << e.what();
throw runtime_error("Could not read file " + path.string());
}
while (std::getline(infile, line)) {
std::istringstream iss(line);
........
}
文件路径包含空格。
我也试过用 fopen 打开文件,但也失败了