std::filesystem::path 核心用法与跨平台路径处理
请介绍 C++17 中 std::filesystem::path 的核心 API,包括路径拼接(operator/)、路径分解(stem/extension/filename)、相对/绝对路径转换和跨平台注意事项。
回答
编译有声
std::filesystem::path 是跨平台路径抽象,自动处理 / 与 \:
构造与拼接:
path p1 = "/usr/local";
path p2 = p1 / "bin" / "g++"; // /usr/local/bin/g++
p1 += "_config"; // 追加字符串
分解方法:
p.root_name():盘符(WindowsC:)或空。p.root_directory():根目录分隔符。p.parent_path():父路径/usr/local。p.filename():文件名g++。p.stem():无扩展名文件名g++。p.extension():扩展名 ``(无后缀)或.txt。p.relative_path():相对路径部分。
操作:
absolute(p):转为绝对路径。canonical(p):解析符号链接和./..,路径必须存在。relative(p, base):相对 base 的相对路径。
跨平台注意事项:
preferred_separator:Linux 为/,Windows 为\。- 使用
operator/而非字符串拼接。 path::string()返回 native 格式。