如何在C++中创建文件夹(如果它不存在)?

5

我有这样一段简单的代码:

FILE *fIn;
fIn = fopen("c:\\myFiles\\andrea.txt","r");

我的问题是:如果'myFiles'文件夹不存在,有没有办法从我的C++代码直接创建它? 如果我的路径中有多个目录,我该如何创建所有这些目录?


1
如果您不关心您的程序不支持多平台,您可以使用 system("在此处输入任何系统命令") - MivVG
1
文件系统操作依赖于操作系统。如果你在Windows上编程,请使用Windows API中的CreateDirectory调用:https://msdn.microsoft.com/en-us/library/windows/desktop/aa363855(v=vs.85).aspx。在Linux/Unix上,请使用标准C库中的mkdir调用。 - FBergo
4
在C++17之前和<filesystem>标准库之前,没有跨平台的方法来实现这一点。但幸运的是,在C++17中,你现在有了create_directory函数。 - Jesper Juhl
1
自从C++17以来,std::filesystem::create_directories - Jarod42
3
在C++17之前,一直都有boost::filesystem库。特别是其中的create_directories函数。 - G.M.
显示剩余7条评论
4个回答

5
在C++17中,您可以使用文件系统头文件(filesystem)提供的create_directory函数来解决您的问题。
如果您无法使用C++17,则需要依赖于特定于平台的API。

1
它是跨平台的吗? - user9432978
3
这是标准库的一部分,因此跨平台性有些隐含... - Jesper Juhl
2
它是在[全新]标准中。它是否可用于您的平台取决于您的平台上有哪些工具链以及它们提供了哪些标准功能。就个人而言,我很多年内不会针对支持C++17的平台进行目标定位 - 您可能与我情况相同,也可能不同。 - Lightness Races in Orbit
感谢您的回答。 - user9432978
1
std::filesystem是跨平台的,但显然还没有在任何稳定的编译器中得到支持:http://en.cppreference.com/w/cpp/compiler_support(只在未发布的GCC开发版本中得到支持,尚未在MSVC或clang中实现)。 - FBergo
@FBergo 时间会解决这个问题。 - Jesper Juhl

-1
在C++中,如果文件不存在,它会自动使用您输入的名称创建一个新文件。 Ofstream file1("myName.txt"); 这将自动创建一个名为“myName”的文件。

这不是问题所在。他们正在询问如何创建目录而不是文本文件。 - DTSCode

-3

ifstream inFile;

inFile.open("c:\myFiles\andrea.txt","r");


请详细说明这个答案的作用,而不仅仅是发布代码。此外,您应该在代码前面放置4个空格以将其格式化为代码。 - HeedfulCrayon

-4

包含

ifstream inFile;

inFile.open("c:\myFiles\andrea.txt","r");

用于声明文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接