在Windows的dirent.h中找不到mkdir()函数

问题描述 投票:4回答:5

我在VC2013中为Windows使用dirent.h 1.20(source)。

我在其中找不到mkdir()

我应该如何使用它?还是可以仅使用dirent.h创建目录?

c++ c visual-c++ mkdir dirent.h
5个回答
4
投票

要链接的标头实际上是将(POSIX)dirent.h调用转换为(本机)Windows调用。但是dirent.h是关于dir部门ent的国家,即reading目录,而不是creating目录。

如果要创建目录(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编译器工具链和POSIX标头的完整集合,例如dirent.hsys/stat.h,[C0 ]等,允许您在编程中始终使用POSIX API。


11
投票

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

sys/types.h

1
投票

Visual Studio包含#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 } 标头。此标头声明<direct.h>,可用于创建目录,并且是Visual Studio附带的C库的一部分。

另一个“简便”选项是使用Windows API调用,如_mkdir and _wmkdir所示。


0
投票

您可以使用sys / types.h头文件并使用DevSolar方法创建目录以下是示例代码

mkdir(const char*)

0
投票

mkdir已过时。提供#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"); } 作为头文件。然后写

#include <direct.h>
© www.soinside.com 2019 - 2024. All rights reserved.