答案:C++标准库无跨平台目录创建函数,需使用系统API或C++17的filesystem。Windows用CreateDirectory,Linux用mkdir,二者均不支持自动创建多级目录;推荐C++17的std::filesystem::create_directories实现跨平台多级目录创建。

在C++中创建文件夹(即目录),标准库本身并没有直接提供跨平台的目录创建函数。但可以通过调用操作系统提供的API来实现。下面分别介绍Windows和Linux系统下的常用方法。
Windows系统:使用CreateDirectory
在Windows平台上,可以使用Windows API中的CreateDirectory函数来创建目录。
头文件:#include windows.h>
函数原型:
BOOL CreateDirectory(LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
参数说明:
立即学习“C++免费学习笔记(深入)”;
- lpPathName:要创建的目录路径(支持多级路径,但父目录必须已存在)。
- lpSecurityAttributes:安全属性,一般传NULL表示使用默认安全设置。
示例代码:
#include iostream>#include windows.h>
int main() {
if (CreateDirectory(L"C:\\myfolder", NULL)) {
std::wcout } else {
std::wcout }
return 0;
}
注意:路径使用宽字符(L前缀),建议使用std::wstring或宽字符字符串。如果路径包含多级(如C:\a\b\c),需确保父目录C:\a\b已存在,否则创建会失败。
Linux/Unix系统:使用mkdir
在Linux或macOS等类Unix系统中,使用POSIX标准的mkdir函数。
头文件:#include
#include
函数原型:
int mkdir(const char *pathname, mode_t mode);
参数说明:
立即学习“C++免费学习笔记(深入)”;
- pathname:目录路径。
- mode:权限模式,如0755,表示目录的访问权限。
返回值:成功返回0,失败返回-1。
示例代码:
#include#include
int main() {
if (mkdir("./myfolder", 0755) == 0) {
std::cout } else {
std::cout }
return 0;
}
注意:与Windows不同,mkdir不支持自动创建多级目录。例如,想创建./a/b/c,必须先创建a、再b,否则会失败。
跨平台解决方案建议
如果你希望代码能在多个平台运行,可以结合预处理指令判断平台:
#ifdef _WIN32#include
#else
#include
#include
#endif
封装一个函数:
bool createDirectory(const std::string& path) {#ifdef _WIN32
return CreateDirectory(path.c_str(), NULL) != 0;
#else
return mkdir(path.c_str(), 0755) == 0;
#endif
}
这样调用createDirectory("test")就能在不同系统上尝试创建目录。
补充:递归创建多级目录
无论是Windows还是Linux,原生函数都不支持递归创建。你可以手动拆分路径,逐级检查并创建。
例如,创建"a/b/c"时,先检查"a"是否存在,不存在则创建;然后"a/b",依此类推。这类逻辑可自行编写或使用Boost等第三方库中的boost::filesystem::create_directories(现已纳入C++17标准库)。
从C++17开始,推荐使用
#include
int main() {
std::filesystem::create_directories("a/b/c");
std::cout return 0;
}
该方法跨平台且支持自动创建多级目录,是现代C++的首选方式。
基本上就这些。根据你的编译器是否支持C++17,可以选择使用std::filesystem,或者按平台调用原生API。简单场景下封装一个跨平台函数即可满足需求。











