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

标签 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

我做错了什么?

最佳答案

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/

相关文章:

c++ - 在 Qt Qml 控件中,ApplicationWindow 在运行时缺少原生外观的主题

html - CSS |导入 Sprite 不正确的相对路径

c++ - GCC 编译器警告 : extended initializer lists only available with c++0x

c++ - 如何使用 NCurses 阻止 C++ 中的某些键

c++ - DBX 核心文件被截断了吗?

linux - sed 编辑文件时的额外空字符

c++ - 在 Debian 上为您自己的应用程序添加 SNMP 支持的最佳方式

c++ - 在 C++ 的 include 语句中使用(相对)路径作为快捷方式

python - 如何在 Visual Studio 中使用 python 设置相对路径?

c++ - ADL 未按预期工作