C ++ - 加载数据文件失败!

时间:2010-01-03 13:35:23

标签: c++ file ifstream

我想在C ++程序中加载一个简单的数据文件。出于奇怪的原因,它不起作用:

  • 我在Windows上尝试过,假设该文件位于同一目录中:失败
  • 我在Windows上通过在C:\目录中移动文件来尝试它:工作
  • 我在Linux上尝试将文件放在同一目录中:失败

摘录:

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或其他任何内容找到确切的错误?

4 个答案:

答案 0 :(得分:2)

默认情况下,无法打开的文件(或任何其他I / O操作)不会引发异常。您可以更改此行为,但标准仍然无法从异常中提取失败的确切原因。

答案 1 :(得分:1)

Linux文件名区分大小写 您的文件实际上是map.dat吗?

另外,您是否尝试将该文件放在当前目录中?

答案 2 :(得分:1)

Roger Pate的评论:

  

使用"./filename"(假设./,甚至不需要)可以在Windows和Linux上移植,但问题可能是CWD不是他认为的那样。

答案 3 :(得分:1)

问题是工作目录。

当您指定文件的相对路径时,它使用工作目录(可能与您在文件系统上存储应用程序的目录不同)。

  • 因此您需要使用绝对路径。
  • 或者您需要找到当前的工作目录并指定相对于该文件的文件。
  • 或者更改当前的工作目录。