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

Rol*_*ien 11 c c++ linux macos

我找到了很多库来帮助解析命令行参数,但它们似乎都没有处理文件名.如果我在命令行上收到类似"../foo"的内容,我该如何找出该文件的完整路径?

Ara*_*raK 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;
Run Code Online (Sandbox Code Playgroud)

  • V3中的fs :: absolute(p) (4认同)

pmg*_*pmg 15

POSIX有realpath().

#include <stdlib.h>
char *realpath(const char *filename, char *resolvedname);
Run Code Online (Sandbox Code Playgroud)

描述
真实路径()函数派生,从路径指向的文件名,绝对路径名称相同的文件,其分辨率不涉及"'’..",或符号链接.生成的路径名在resolvedname指向的缓冲区中最多存储{PATH_MAX}个字节.