什么会导致ifstream代码在OS X上失败?
What would cause ifstream code to fail on OS X?
我有以下代码
string fileName = "assets/maps/main.json";
std::ifstream file(fileName);
std::string temp;
if(!file.good())
{
LOG(logERROR) << "Failed to open map file: " << fileName;
//return;
}
LOG(logDEBUG) << "file Char Count: " << file.gcount();
while(std::getline(file, temp))
{
mapString += temp;
}
file.close();
这段代码在Windows 8上运行得非常好。当我把这个程序转到OS X上时,文件100%都打不开。或者更简洁地说,file.good()永远不会返回true。我故意注释掉那里的返回,以帮助调试后面的代码。
不管怎样,这已经让我发疯了。我不知道为什么它在OS X上失败了。我尝试了不同的目录,在OS X上重新创建了文件,以确保它不是编码或行尾问题,什么都没有。
我还可以做什么来调试,或者我可以尝试什么替代方法?
我也检查了文件权限本身,它们都很好。我在相同的目录结构中有许多其他类型的文件(图像,音乐,字体),它们都打开得很好,只是这个JSON文件失败了,这个文件的任何新衍生文件也失败了。
当你在Linux或MacOSX上启动一个程序时,工作目录将是用户所在的位置。所以,如果你的游戏需要查找文件,你就需要使用合适的偏好系统。Mac有一个"捆绑包"的概念,它允许一个程序附带数据文件,使用查找它们,你必须学会如何创建一个。你可以看看里面所有的。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- libprotobuf 检查在 Mac OS 上执行程序时失败
- MoltenVK(适用于 Vulkan)构建在 OS X v. 10.13.3 (17D102) 上失败 |Xcode
- 网络更改事件注册在 MAC OS X 10.7 (Lion) 中失败
- ACE 在 MAC OS X 10.9(及更高版本)中的 Linker 上失败
- 在Mac OS X上使用CUDA 5.5时出现内核失败错误
- 在OS X 10.9.3的Xcode 5.1.1下,unordered_map编译失败
- 在libjvm中定位JNI_GetCreatedJavaVMs方法失败.dylib (Mac OS)
- 在Mac OS X下,vswprintf在某些unicode码点上失败
- OS X获取远程进程输入参数有时会失败
- 什么会导致ifstream代码在OS X上失败?
- 在OS X 10.9.2下使用Rbenv制作Ruby 2.1.1失败