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











