使用文件流时,如何使程序运行而不管用户的密码如何?
How to make a program work regardless of the user's pwd when using file streams?
考虑 ~/my/computer/my_project
中的项目和文件:
- main.cpp
- 输入
我们希望项目可以在 ~/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
考虑 ~/my/computer/my_project
中的项目和文件:
- main.cpp
- 输入
我们希望项目可以在 ~/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