在 Linux 中使用 realpath 将相对路径更改为 C++ 中的绝对路径
Change relative path to absolute path in C++ using realpath in Linux
我需要在 C++ 年将相对路径更改为 linux 中的绝对路径。我正在使用真实路径,但输出是错误的!
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++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- C++A*算法并不总是在路径中具有目标节点
- 从函数角度看ID到文件路径的内部与外部映射
- boost xml parsingl将xml的路径作为变量发送
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何使用cppcheck处理半相对包含路径
- 在C++中设置基于操作系统的文件路径
- 基于编译器选项的编译二进制路径
- 按边长度递归搜索图中所有可行路径
- 使用变量值作为 PlaySound 中的路径
- 如何转换真实路径 CString c++
- 从 GUID 获取 USB 卷路径
- 查找 GCD:并非所有控制路径都返回值
- C++17 文件系统::remove_all 带有通配符路径
- 在带有尾部斜杠的路径上返回 std::filesystem::create_directories() 的值
- 获取当前正在运行的 exe 名称(不是路径)
- 如何从 Skia 路径几何体中获取网格?
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)