1

每当我尝试使用 istream 打开文件时,它都不会打开(is_open() 返回 false)。是否需要放置一个特定目录才能访问文件(它位于项目的输出目录中)?

ifstream ifile;
ifile.open("test.txt");
if(!ifile.is_open()){
    cout << "The file could not be opened." << endl;
}
cin.get();
4

4 回答 4

4

它需要在程序的“工作目录”中。这是您运行程序时所在的目录,或者如果您使用的是像 Visual Studio 这样的 IDE,则为项目的目录(该目录还包含 Release 和/或 Debug 构建文件夹)。

于 2011-04-25T13:46:02.150 回答
2

您需要提供文件的正确路径。我不知道您的项目结构是什么,但类似于:

ifile.open("output/test.txt");
于 2011-04-25T13:45:37.297 回答
2

我在 Linux 机器上工作,并且将文件test.txt与二进制文件放在同一目录中总是有效的。因此,如果您的项目的可执行文件名为a.out,那么以下两个步骤应该可以使其工作:

  1. 确保test.txt 与a.out
  2. 检查permissionstest.txt 和whether it exists.
于 2011-04-25T13:48:53.177 回答
1

尝试更改此行 ifile.open("test.txt"); -> ifile.open("/test.txt");

ifstream ifile;
ifile.open("/test.txt");
if(!ifile.is_open()){
    cout << "The file could not be opened." << endl;
}
cin.get();
于 2011-04-25T13:46:44.873 回答