我想在C ++程序中加载一个简单的数据文件。出于奇怪的原因,它不起作用:
摘录:
void World::loadMap(string inFileName) {
ifstream file(inFileName.c_str(), ios::in);
if (file) {
}
else
{
cout<<"Error when loading the file \n";
exit(-1);
}
}
我像这样调用loadMap方法:
World::Instance()->loadMap("Map.dat");
(世界是单身人士)。
如何使用try-catch或其他任何内容找到确切的错误?
答案 0 :(得分:2)
默认情况下,无法打开的文件(或任何其他I / O操作)不会引发异常。您可以更改此行为,但标准仍然无法从异常中提取失败的确切原因。
答案 1 :(得分:1)
Linux文件名区分大小写
您的文件实际上是map.dat
吗?
另外,您是否尝试将该文件放在当前目录中?
答案 2 :(得分:1)
Roger Pate的评论:
使用
"./filename"
(假设./
,甚至不需要)可以在Windows和Linux上移植,但问题可能是CWD不是他认为的那样。
答案 3 :(得分:1)
问题是工作目录。
当您指定文件的相对路径时,它使用工作目录(可能与您在文件系统上存储应用程序的目录不同)。