CodeWalk

std::filesystem::path 核心用法与跨平台路径处理

作者:编译有声 · 2026-05-30 12:55

请介绍 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():盘符(Windows C:)或空。
  • 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 格式。