我需要在 C++ 中将 linux 中的相对路径更改为绝对路径。我正在使用 realpath,但输出是错误的!
char resolved_path[200];
realpath("$HOME/Desktop/SumoSVN/bin", resolved_path);
cout << resolved_path << endl;
我期待得到这个输出:/home/mani/Desktop/SumoSVN/bin
但我明白了!:/home/mani/Desktop/VENTOS/$HOME
我做错了什么?
最佳答案
Shell 或环境变量(参见 environ(7) )不会被 realpath(3) 扩展.您需要调用getenv(3) .你可以试试
std::string homedir(getenv("HOME"));
realpath((homedir+"/Desktop/SumoSVN/bin").c_str(), resolved_path);
另见 wordexp(3) (也许还有 glob(3) )。阅读path_resolution(7) & glob(7) .请注意,是您的 shell 扩展了命令的参数。
顺便说一句,当前目录是通过getcwd(3)获得的.
附言。在一些不同语言的安装中 Desktop
不存在:它变成了例如Bureau
在法语 Debian 或 Ubuntu 或 Mint 系统上。
关于c++ - 在 Linux 中使用 realpath 在 C++ 中将相对路径更改为绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163835/