在Linux中使用realpath将相对路径更改为C ++中的绝对路径

时间:2014-03-04 05:39:36

标签: c++ linux relative-path

我需要在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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

environ(7)未扩展Shell或环境变量(请参阅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)&amp; glob(7)。请注意,它是扩展命令参数的shell。

BTW,当前目录由getcwd(3)获得。

PS。在某些使用不同语言Desktop的安装中,不存在:法语Debian或Ubuntu或Mint系统上的Bureau