c++ - 如何在不使用boost的情况下创建目录?

标签 c++ linux windows macos file-io

我想在与我的程序相同的路径中创建一个目录,最终将数据保存到。为此,我需要由预处理器分支包围的特定于操作系统的调用,但在此之前我从未编写过任何特定于操作系统的代码。我不确定我需要包含哪些 header ,或者要使用它们的哪些功能。

如果操作系统是 Windows、Mac 和 Linux(无论哪种方法都适用于大多数 Linux 发行版),我应该使用哪些函数和 header ?

我不想为此使用 boost 文件系统的原因是,我整天都很难编译它;它的文档和构建系统,呃,对于我简单的灵魂来说似乎太学术/冗长了!最终,我相信维护 3 或 4 个单独的文件加载分支对我来说会更快。

最佳答案

在所有 Unix 系统(Linux、Mac OS X 等)上,您应该使用两个参数调用 mkdir:

mkdir(filename, 0755);

在 Windows 上,您希望使用 _mkdir 时只有一个参数:

_mkdir(filename);

所以你的代码应该说

#ifdef WIN32
#include <direct.h>
rc = _mkdir(filename);
#else
#include <sys/stat.h>
rc = mkdir(filename, 0755);
#endif

关于c++ - 如何在不使用boost的情况下创建目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884953/

相关文章:

c++ - 捕获并修改 std::exception 和子类,重新抛出相同类型

c - mvprintw() 只打印部分

android - 3.0内核中的wakelock核心代码和接口(interface)与3.7/3.8有何区别?

linux - 在 awk 中删除\r\n

c++ - 更改最近文件的总数

windows - 失去本地主机网络连接的机会?

c++ - 如何在udp c++​​中发送和接收大量数据

c++ - 如何使 std::variant<..> 可用于 QVariant?

c++ - 无法在类中初始化静态映射

c++ - 使用 boost.process 同时读取和写入 child 的 stdio