std::filesystem::create_directories是c++17跨平台递归建目录的可靠方案,自动处理路径分隔符、权限及错误;返回true表示成功(含全已存在),false仅因路径非法、无权限等真正失败。
std::filesystem::create_directories 是 C++17 引入的可靠方式,能递归创建完整路径(包括中间不存在的父目录),只要权限允许、路径合法,就基本能成功。
为什么不用 mkdir 或系统命令
直接调用 mkdir 系统命令或 C 风格的 mkdir() 函数,只能创建单层目录,遇到 "logs/2024/06" 这种多级路径会失败;还要手动处理平台差异(Windows 用 \,Linux/macOS 用 /)、错误码判断、权限掩码(mode_t 在 Windows 上无效)等问题。而 std::filesystem::create_directories 内置跨平台路径解析和递归逻辑,省去大量胶水代码。
create_directories 的典型用法与返回值含义
该函数返回 bool:成功创建至少一个新目录时为 true;若所有目录已存在,也返回 true(不报错,这是设计行为);仅当路径非法、无权限、磁盘满或父路径是文件而非目录时才返回 false。
使用前需包含头文件并启用 C++17: