这里是否有可能使用以"〜"开头的路径。在linux中的 c ++ 代码?例如,此代码无法正常工作:
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
ofstream myfile;
myfile.open ("~/example.txt");
myfile << "Text in file .\n";
myfile.close();
return 0;
}
答案 0 :(得分:6)
我猜你是在Linux或POSIX系统上,有一个了解~
的交互式shell(例如bash
)
实际上,以~
开头的文件路径几乎从未发生过(您可以在shell中创建mkdir '~'
这样的目录,但这样做会有悖常理)。请记住,您的shell是globbing个参数,因此您的shell (不是您的程序!)正在用替换~
,例如在终端中键入/home/martin
作为命令时, myprogram ~/example.txt
。见glob(7)。您可能希望在C ++程序中使用glob(3)或wordexp(3)(但只有当"~/example.txt"
字符串来自某些数据时才需要这样做 - 例如某些配置文件,某些用户输入,等...)
有时,您可能只需使用getenv(3)获取主目录(或getpwuid(3)使用getuid(2))。也许你可能会这样做
std::string home=getenv("HOME");
std::string path= home+"/example.txt";
ofstream myfile(path);
如果您是认真的,则应检查getenv("HOME")
是否未返回NULL
。在实践中,这不太可能发生。
另见this。