首页 > 后端开发 > C++ > 正文

c++中怎么创建文件夹_创建目录的函数与用法

冰火之心
发布: 2025-09-29 12:43:01
原创
837人浏览过
答案:C++标准库无跨平台目录创建函数,需使用系统API或C++17的filesystem。Windows用CreateDirectory,Linux用mkdir,二者均不支持自动创建多级目录;推荐C++17的std::filesystem::create_directories实现跨平台多级目录创建。

c++中怎么创建文件夹_创建目录的函数与用法

在C++中创建文件夹(即目录),标准库本身并没有直接提供跨平台的目录创建函数。但可以通过调用操作系统提供的API来实现。下面分别介绍Windows和Linux系统下的常用方法。

Windows系统:使用CreateDirectory

在Windows平台上,可以使用Windows API中的CreateDirectory函数来创建目录。

头文件:#include <windows.h>

函数原型:
BOOL CreateDirectory(LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);

参数说明:

立即学习C++免费学习笔记(深入)”;

千图设计室AI海报
千图设计室AI海报

千图网旗下的智能海报在线设计平台

千图设计室AI海报 172
查看详情 千图设计室AI海报
  • lpPathName:要创建的目录路径(支持多级路径,但父目录必须已存在)。
  • lpSecurityAttributes:安全属性,一般传NULL表示使用默认安全设置。

示例代码:

#include <iostream>
#include <windows.h>

int main() {
    if (CreateDirectory(L"C:\myfolder", NULL)) {
        std::wcout << L"目录创建成功! ";
    } else {
        std::wcout << L"目录可能已存在或创建失败。 ";
    }
    return 0;
}

注意:路径使用宽字符(L前缀),建议使用std::wstring或宽字符字符串。如果路径包含多级(如C:c),需确保父目录C:已存在,否则创建会失败。

Linux/Unix系统:使用mkdir

在Linux或macOS等类Unix系统中,使用POSIX标准的mkdir函数。

头文件:#include <sys/stat.h>
#include <sys/types.h>

函数原型:
int mkdir(const char *pathname, mode_t mode);

参数说明:

立即学习C++免费学习笔记(深入)”;

  • pathname:目录路径。
  • mode:权限模式,如0755,表示目录的访问权限。

返回值:成功返回0,失败返回-1。

示例代码:

#include <iostream>
#include <sys/stat.h>

int main() {
    if (mkdir("./myfolder", 0755) == 0) {
        std::cout << "目录创建成功! ";
    } else {
        std::cout << "创建失败(可能已存在)。 ";
    }
    return 0;
}

注意:与Windows不同,mkdir不支持自动创建多级目录。例如,想创建./a/b/c,必须先创建a、再b,否则会失败。

跨平台解决方案建议

如果你希望代码能在多个平台运行,可以结合预处理指令判断平台:

#ifdef _WIN32
    #include <windows.h>
#else
    #include <sys/stat.h>
    #include <sys/types.h>
#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开始,推荐使用<filesystem>头文件中的功能:

#include <iostream>
#include <filesystem>

int main() {
    std::filesystem::create_directories("a/b/c");
    std::cout << "多级目录已创建。 ";
    return 0;
}

该方法跨平台且支持自动创建多级目录,是现代C++的首选方式。

基本上就这些。根据你的编译器是否支持C++17,可以选择使用std::filesystem,或者按平台调用原生API。简单场景下封装一个跨平台函数即可满足需求。

以上就是c++++中怎么创建文件夹_创建目录的函数与用法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号