无法在dirent.h中找到适用于windows的mkdir()函数

时间:2014-05-02 12:07:34

标签: c++ c visual-c++ mkdir dirent.h

我在VC2013中使用dirent.h 1.20(source)for windows。

我无法在其中找到mkdir()

我该如何使用它?或者我可以使用dirent.h以某种方式创建目录吗?

5 个答案:

答案 0 :(得分:10)

在不使用任何其他库的情况下帮助的最简单方法是。

#if defined _MSC_VER
#include <direct.h>
#elif defined __GNUC__
#include <sys/types.h>
#include <sys/stat.h>
#endif

void createDir(string dir) {
#if defined _MSC_VER
    _mkdir(dir.data());
#elif defined __GNUC__
    mkdir(dir.data(), 0777);
#endif
}

答案 1 :(得分:3)

您要链接的标题实际上是将您的(POSIX)dirent.h调用转换为(本机)Windows调用。但dirent.h与_dir_ectory _ent_ries有关,即正在阅读目录,而不是正在创建目录。

如果您想创建目录(mkdir()),您需要:

  • 一个类似的包装标题将您的(POSIX)mkdir()调用转换为相应的(本机)Windows函数调用(我无法为您指出这样的标题),或者
  • 直接使用Windows API,这可能是实用的,但会导致POSIX和Windows功能的混合......

// UGLY - these two don't belong in the same source...
#include <dirent.h>
#include <windows.h>

// ...
CreateDirectory( "D:\\TestDir", NULL );
// ...

另一种解决方案是查看Cygwin,它提供在Windows上运行的POSIX环境,包括Bash shell,GCC编译器工具链以及dirent.h等{POSO}标题的完整集合。 {1}},sys/stat.h等,允许您在编程中始终如一地使用POSIX API。

答案 2 :(得分:1)

Visual Studio包含<direct.h>标头。 此标头声明_mkdir and _wmkdir,可用于创建目录,并且是Visual Studio附带的C库的一部分。

另一个“简单”选项是使用DevSolar指示的Windows API调用。

答案 3 :(得分:0)

您可以使用sys / types.h头文件并使用
mkdir(const char*)方法创建目录
以下是示例代码

#include<stdio.h>
#include<string.h>
#include <unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
int main()
{
    if(!mkdir("C:mydir"))
    {
        printf("File created\n");
    }
    else
        printf("Error\n");
}

答案 4 :(得分:0)

mkdir已过时。提供#include <direct.h>作为头文件。然后写

_mkdir("C:/folder")