我发现很多库都可以帮助解析命令行参数,但是它们似乎都不能处理文件名。如果我在命令行上收到类似 "../foo" 这样的输入,如何确定文件的完整路径?
我发现很多库都可以帮助解析命令行参数,但是它们似乎都不能处理文件名。如果我在命令行上收到类似 "../foo" 这样的输入,如何确定文件的完整路径?
您可以使用boost :: filesystem
获取文件的绝对路径
,从其相对路径
:
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;
POSIX 提供了 realpath()
函数。
#include <stdlib.h>
char *realpath(const char *filename, char *resolvedname);
描述
realpath() 函数从指向 filename 的路径名中,导出一个绝对路径名,它指定相同的文件,其解析过程不涉及 "."、".." 或符号链接。生成的路径名最多使用 {PATH_MAX} 字节存储在由 resolvedname 指向的缓冲区中。