每当我尝试用istream打开文件时,它不会打开(is_open()返回false)。文件是否需要放在一个特定的目录才能被访问(它在项目的输出目录中)?
ifstream ifile;
ifile.open("test.txt");
if(!ifile.is_open()){
cout << "The file could not be opened." << endl;
}
cin.get();
需要在程序的"工作目录"中。这是你运行程序时所在的目录,或者如果你使用的是像Visual Studio这样的IDE,项目的目录(该目录还包含Release和/或Debug构建文件夹)。
您需要提供文件的正确路径。我不知道你的项目的结构是什么,但像这样:
ifile.open("output/test.txt");
我在Linux机器上工作,将文件test.txt
放在与二进制文件相同的目录中总是有效的。因此,如果项目的可执行文件名为a.out
,那么以下两个步骤应该可以使其工作:
- 确保
test.tx
t与a.out
在同一目录下 - 检查test.txt和
whether it exists
中的permissions
。
试着改变这一行if file.open("test.txt");-> ifile.open("/用法");
ifstream ifile;
ifile.open("/test.txt");
if(!ifile.is_open()){
cout << "The file could not be opened." << endl;
}
cin.get();