C++ 文件无法打开

问题描述 投票:0回答:2

我是 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;
}
c++ file-io
2个回答
2
投票

如果您指定

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);
}

0
投票

常见问题可能是指定错误的路径,CMakeLists.txt使用cmake-build-debug作为其目录,因此如果您的文件位于其之外的一层,您只需使用

process_file("../test.dat");
这对我有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.