在C++中创建文件夹需使用平台相关API或C++17的filesystem库,Windows下用CreateDirectoryA,Linux下用mkdir,跨平台推荐std::filesystem::create_directory。

在C++中创建文件夹(目录),可以使用操作系统提供的API。由于标准C++库没有直接支持目录操作的函数,因此需要借助平台相关的系统调用。下面分别介绍在Windows和Linux系统下如何用C++创建文件夹。
Windows下创建文件夹
在Windows环境下,可以使用CreateDirectory函数来创建目录。该函数定义在<windows.h>头文件中。
示例代码:
#include <iostream>
#include <windows.h>
<p>int main() {
const char* path = "C:\MyNewFolder";</p><pre class='brush:php;toolbar:false;'>if (CreateDirectoryA(path, NULL)) {
std::cout << "文件夹创建成功!" << std::endl;
} else {
DWORD error = GetLastError();
if (error == ERROR_ALREADY_EXISTS) {
std::cout << "文件夹已存在。" << std::endl;
} else {
std::cout << "创建失败,错误代码:" << error << std::endl;
}
}
return 0;}
立即学习“C++免费学习笔记(深入)”;
说明:
- 使用CreateDirectoryA处理ANSI字符串,若使用宽字符可用CreateDirectoryW。
- GetLastError()用于获取失败原因。
Linux下创建文件夹
在Linux或类Unix系统中,使用mkdir()函数,定义在<sys/stat.h>和<sys/types.h>头文件中。
示例代码:
#include <iostream>
#include <sys/stat.h>
#include <sys/types.h>
#include <cerrno>
#include <cstring>
<p>int main() {
const char* path = "/tmp/MyNewFolder";</p><pre class='brush:php;toolbar:false;'>int result = mkdir(path, 0755); // 权限设置为 rwxr-xr-x
if (result == 0) {
std::cout << "文件夹创建成功!" << std::endl;
} else {
if (errno == EEXIST) {
std::cout << "文件夹已存在。" << std::endl;
} else {
std::cout << "创建失败:" << std::strerror(errno) << std::endl;
}
}
return 0;}
立即学习“C++免费学习笔记(深入)”;
说明:
- 第二个参数是权限模式,常用0755表示所有者可读写执行,其他用户可读和执行。
- 错误信息通过errno和strerror()获取。
跨平台解决方案建议
如果你希望代码能在多个平台运行,可以用预处理器判断操作系统,选择对应的实现方式。
#ifdef _WIN32
#include <windows.h>
CreateDirectoryA("test_folder", NULL);
#else
#include <sys/stat.h>
mkdir("test_folder", 0755);
#endif
也可以考虑使用C++17引入的<filesystem>库,它提供跨平台的目录操作功能。
C++17 filesystem 示例:
#include <iostream>
#include <filesystem>
<p>int main() {
std::string path = "new_folder";</p><pre class='brush:php;toolbar:false;'>try {
if (std::filesystem::create_directory(path)) {
std::cout << "文件夹创建成功!" << std::endl;
} else {
std::cout << "文件夹已存在或创建被阻止。" << std::endl;
}
} catch (const std::exception& e) {
std::cout << "错误:" << e.what() << std::endl;
}
return 0;}
立即学习“C++免费学习笔记(深入)”;
编译时注意:使用filesystem需链接stdc++fs库,例如:
g++ -std=c++17 your_code.cpp -lstdc++fs
基本上就这些方法,根据你的开发环境选择合适的方式即可。











