通过Visual Studio运行时无法打开文件

时间:2015-01-21 19:05:43

标签: c++ visual-studio ifstream

我有功能

void foo()
  {
   std::string path = "Test.txt" ;
  std::ifstream file;
  file.open(path);
  if (file.good()) // if the file opened up 
  {
        std::cout << "YAY" << std::endl;
  }
  else
  {
      std::cout << "ERROR!" << std::endl;
      getError();
  }
}

我有一个文件&#34; Test.txt&#34;在我有.exe文件的文件夹中。 通过cmd直接运行程序,打开文件成功,但通过Visual Studio运行程序无法打开文件。 我尝试用完整路径打开文件,但结果保持不变。

3 个答案:

答案 0 :(得分:4)

  

我在.exe文件

的文件夹中有一个文件“Test.txt”

这是无关紧要的。该过程甚至不知道.exe文件在哪里!

重要的是进程的当前工作目录,这可能不是加载.exe的地方。

在Visual Studio中进行调试时,我认为这是项目的根文件夹。

答案 1 :(得分:3)

系统在其他某个目录(不包含exe文件的目录)中运行可执行文件。您可以通过创建文件来发现哪一个:

void foo()
{
    std::ofstream hey("whatever");
}

然后查看文件的创建位置。这是系统运行exe文件的目录。

答案 2 :(得分:1)

默认情况下,Visual Studio的工作目录是项目的文件夹(通常可以看到代码文件和项目文件),因此请确保您的文件存在。 EXE位于Debug文件夹中,这是不相关的,因为它不是Visual Studio的工作目录。

您可以这样更改工作目录:

https://msdn.microsoft.com/en-us/library/ms171340%28v=vs.90%29.aspx

干杯。