我是 C++ 新手,正在尝试打开文件,但无法使其工作。该文件肯定存在,位于同一目录中。我尝试过取消隐藏扩展名(例如,它肯定称为 test.txt 而不是 test.txt.txt),并且还尝试使用完整路径。该文件未在任何地方打开。有什么想法(我确信这很简单,但我被困住了)?
string mostCommon(string fileName)
{
string common = "default";
ifstream inFile;
//inFile.open(fileName.c_str());
inFile.open("test.txt");
if (!inFile.fail())
{
cout << "file opened ok" << endl;
}
inFile.close();
return common;
}
如果您指定
inFile.open("test.txt")
,它将尝试在当前工作目录中打开"test.txt"
。检查以确保该文件确实位于该位置。如果您使用绝对或相对路径,请确保使用 '/'
或 '\\'
作为路径分隔符。
这是一个在文件存在时起作用的示例:
#include <fstream>
#include <string>
#include <cassert>
using namespace std;
bool process_file(string fileName)
{
ifstream inFile(fileName.c_str());
if (!inFile)
return false;
//! Do whatever...
return true;
}
int main()
{
//! be sure to use / or \\ for directory separators.
bool opened = process_file("g:/test.dat");
assert(opened);
}
常见问题可能是指定错误的路径,CMakeLists.txt使用cmake-build-debug作为其目录,因此如果您的文件位于其之外的一层,您只需使用
process_file("../test.dat");
这对我有帮助。