您现在的位置是:群英 > 开发技术 > 编程语言
C++中如何实现创建文件夹?教你四个方法
Admin发表于 2022-02-18 18:04:472722 次浏览

    这篇文章给大家分享的是C++中实现创建文件夹的方法。小编觉得挺实用的,因此分享给大家做个参考,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。

    提前说明:从参数角度上看,其实都应该使用 char*,但是为了方便这里使用的都是 string。在 SO 上找到一个方式把 string 转成 char*,就是调用 string 的 c_str() 函数。

    本文示例都是在 E:\database 路径下创建一个叫做 testFolder 的文件夹。

    使用 system() 调用 dos 命令

#include <iostream>
using namespace std;

int main()
{
    string folderPath = "E:\\database\\testFolder"; 

    string command;
    command = "mkdir -p " + folderPath;  
    system(command.c_str());

    return 0;
}

    使用头文件 direct.h 中的 access 和 mkdir 函数

    关于 direct.h 我觉得 维基百科 上介绍的不错

#include <direct.h>
#include <iostream>
using namespace std;

int main()
{
    string folderPath = "E:\\database\\testFolder"; 

    if (0 != access(folderPath.c_str(), 0))
    {
        // if this folder not exist, create a new one.
        mkdir(folderPath.c_str());   // 返回 0 表示创建成功,-1 表示失败
        //换成 ::_mkdir  ::_access 也行,不知道什么意思
    }

    return 0;
}

    调用 Windows API 函数

#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
    string folderPath = "E:\\database\\testFolder"; 

    if (!GetFileAttributesA(folderPath.c_str()) & FILE_ATTRIBUTE_DIRECTORY) {
        bool flag = CreateDirectory(folderPath.c_str(), NULL);
        // flag 为 true 说明创建成功
    } else {
        cout<<"Directory already exists."<<endl;
    }

    return 0;
}

    调用 MFC 封装好的接口函数

    不推荐此方法,出错的话会有点麻烦。

#include <iostream>
#include <shlwapi.h>
using namespace std;

int main()
{
    string folderPath = "E:\\database\\testFolder"; 

    if (!PathIsDirectory(folderPath.c_str()))  // 是否有重名文件夹
    {
        ::CreateDirectory(folderPath.c_str(), 0);
    }

    return 0;
}

    如果你出现了错误 undefined reference to imp__PathIsDirectory @ 4,可以参考 undefined reference to imp PathIsDirectory
下面的方法是基于你详细阅读完上述链接后的前提下给出的

    说我在 CodeBlocks 下解决该问题的方法:
    第一步:在项目上右击,选择 Build Options

    第二步: 在 Linker Settings 里添加 libshlwapi.a 文件

    关于C++中实现创建文件夹的方法就介绍到这,上述方法和示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多大家可以关注群英网络其它的相关文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: c 创建文件夹
相关信息推荐
2022-06-08 17:27:25 
摘要:下面由golang教程栏目给大家介绍Golang数组的传递,希望对需要的朋友有所帮助!数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。数组长度最大为2Gb,它是值类型。切片是对数组一个连续片段的引用,所以切片是一个引用类型。
2022-08-02 17:52:37 
摘要:本文由go语言​教程栏目给大家聊聊Golang进程守护Supervisor,希望对需要的朋友有所帮助!
2022-05-10 11:15:27 
摘要:在bootstrap中,可以利用“.pull-left”辅助类的方式设置元素是左浮动,该辅助类的作用就是把元素向左浮动,只需要给元素添加“class="pull-left"”样式即可。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部