使用文件流时,如何使程序运行而不管用户的密码如何?

How to make a program work regardless of the user's pwd when using file streams?

考虑 ~/my/computer/my_project 中的项目和文件:

我们希望项目可以在 ~/your/computer 上使用,所以我们在处理文件流时使用相对路径:

// main.cpp
#include <iostream>
#include <fstream>

int main ()
{
    std::ifstream stream("input");
    
    if (!stream.is_open())
    {
        std::cout << "No file detected" << std::endl;
    }
    
    stream.close();
}

这在用户执行 my_project 目录中的程序时有效,否则会失败(打印 No file detected,这是不希望的)。

当使用这样的文件流时,如何使程序运行而不考虑用户当前的工作目录?

您需要从可执行文件的位置构建一个相对路径。

这取决于 OS,这里有几种方法可以做到这一点: Finding current executable's path without /proc/self/exe