我发现很多库可以帮助解析命令行参数,但是它们似乎都没有处理文件名。如果我在命令行中收到类似“../foo”的内容,我该如何找出该文件的完整路径?
答案 0 :(得分:19)
您可以使用boost::filesystem
从absolute path
获取文件的relative path
:
namespace fs = boost::filesystem;
fs::path p("test.txt");
fs::path full_p = fs::complete(p); // complete == absolute
std::cout << "The absolute path: " << full_p;
答案 1 :(得分:15)
POSIX有realpath()
。
#include <stdlib.h>
char *realpath(const char *filename, char *resolvedname);
<强>描述强>
realpath()函数从 filename 指向的路径名派生出一个名称相同文件的绝对路径名,其分辨率不涉及“。”,“.. “,或符号链接。生成的路径名在 resolvedname 指向的缓冲区中存储,最多为{PATH_MAX}个字节。
答案 2 :(得分:2)
答案 3 :(得分:1)
在shell脚本中,命令“readlink -f”具有realpath()的功能。