在工作目录之外用 C++ 打开文件

Eth*_*han 2 c++ file-io

我有一个程序,该程序将包含多个资源文件,用户可以将这些资源文件放在与可执行文件不在同一文件夹中的计算机上的某个位置。我如何打开这些文件?

我发现很多答案都说事情不起作用的原因是文件不在工作目录中。我试过提供完全合格的路径:

ifstream str;
str.open("/home/millere/foo.txt")
Run Code Online (Sandbox Code Playgroud)

但那是不成功的。我知道路径是正确的(复制和粘贴)。我找不到任何关于它的文档,但我认为它必须是可能的。(例如,vim ~/foo.txt来自~作品以外的任何地方)。

Max*_*xpm 6

假设您打算使用ifstream而不是iostream,那么您的代码是正确的。 ifstream可以使用文件路径以及工作目录中的文件名。

如果文件不存在,则不会抛出异常,但设置了失败位。在尝试对流执行任何操作之前,您应该检查这一点。

std::ifstream input("/home/bob/stuff.txt");

if (!input) std::cerr << "Could not open the file!" << std::endl;

else
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果您仍然无法从文件中提取数据,则问题出在您的代码中的其他地方。