如何获得文件名命令行参数的完整path?

我发现了很多库来帮助parsing命令行参数,但是他们似乎都没有处理处理文件名。 如果我在命令行中收到“../foo”之类的东西,我该如何找出文件的完整path?

Solutions Collecting From Web of "如何获得文件名命令行参数的完整path?"

POSIX有realpath()

 #include <stdlib.h> char *realpath(const char *filename, char *resolvedname); 

描述
realpath()函数从由filename指向的路径名中派生出一个绝对路径 ,该路径名命名同一个文件,其分辨率不涉及“。”,“..”或符号链接。 生成的路径名存储在由被解析名指向的缓冲区中,最多为{PATH_MAX}个字节。

您可以使用boost::filesystemrelative path获取boost::filesystemabsolute 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; 

Boost.Filesystem的

在shell脚本中,命令“readlink -f”具有realpath()的功能。