如何获取文件名命令行参数的完整路径?

时间:2009-11-02 15:33:38

标签: c++ c linux macos

我发现很多库可以帮助解析命令行参数,但是它们似乎都没有处理文件名。如果我在命令行中收到类似“../foo”的内容,我该如何找出该文件的完整路径?

4 个答案:

答案 0 :(得分:19)

您可以使用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;

答案 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()的功能。