C++中创建目录需依赖系统API或C++17 filesystem库。Windows使用CreateDirectory,Linux使用mkdir,推荐C++17的std::filesystem::create_directory或create_directories实现跨平台支持,注意编译时启用-std=c++17并处理异常与权限。

在C++中创建文件夹(目录)没有跨平台的统一标准方法,因为C++标准库本身不直接提供创建目录的功能。需要借助操作系统提供的API或第三方库来实现。以下是几种常见的实现方式。
使用Windows API创建目录
在Windows系统下,可以使用CreateDirectory函数来创建文件夹。
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include iostream>
int main() {
BOOL result = CreateDirectory(L"C:\\new_folder", NULL);
if (result) {
std::wcout } else {
std::wcout }
return 0;
} 注意:路径使用宽字符(L前缀),因此用
std::wcout输出。如果想用普通字符串,可使用ANSI版本
CreateDirectoryA。
使用POSIX mkdir函数(Linux/Unix/macOS)
在类Unix系统中,可以使用mkdir函数,定义在
和
中。
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include#include
int main() {
int result = mkdir("new_folder", 0755);
if (result == 0) {
std::cout } else {
std::cout }
return 0;
}
0755表示目录权限(rwxr-xr-x),仅在支持权限的系统上有效。
跨平台方法:使用C++17 filesystem
C++17引入了库,支持跨平台操作文件系统,推荐现代C++项目使用。
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include#include
int main() {
namespace fs = std::filesystem;
try {
if (fs::create_directory("my_folder")) {
std::cout } else {
std::cout }
} catch (const fs::filesystem_error& e) {
std::cerr }
return 0;
}
g++ -std=c++17 main.cpp -lstdc++fs
注意:旧版gcc需链接
-lstdc++fs,新版已合并。
递归创建多级目录
如果要创建如a/b/c这样的嵌套目录,
create_directory只创建最后一级。可用
create_directories自动创建所有缺失的父目录。 std::filesystem::create_directories("a/b/c"); // 自动创建 a, a/b, a/b/c 这个函数会跳过已存在的目录,适合确保整个路径存在。
基本上就这些。优先推荐C++17的
filesystem方式,简洁且跨平台。若受限于编译器,再根据系统选择API调用。不复杂但容易忽略权限、路径格式和异常处理。











