C++ 如何在C++;

C++ 如何在C++;,c++,windows,api,c++17,mkdir,C++,Windows,Api,C++17,Mkdir,我刚刚发现了一段代码,它允许我在不使用system()的情况下使用windows API创建目录。唯一的问题是我无法在子目录中创建目录。 比如说 #include<windows.h> int main(){ CreateDirectory ("C:\\random", NULL); return 0; } #包括 int main(){ CreateDirectory(“C:\\random”,NULL); 返回0; } 在C中创建一个名为random的文件夹 但

我刚刚发现了一段代码,它允许我在不使用system()的情况下使用windows API创建目录。唯一的问题是我无法在子目录中创建目录。 比如说

#include<windows.h>

int main(){
   CreateDirectory ("C:\\random", NULL);
   return 0;
}
#包括
int main(){
CreateDirectory(“C:\\random”,NULL);
返回0;
}
在C中创建一个名为random的文件夹

但如果我这样做了

#include<windows.h>

int main(){
   CreateDirectory ("C:\\Users\morons", NULL);
   return 0;
}
#包括
int main(){
CreateDirectory(“C:\\Users\morons”,NULL);
返回0;
}
它在C che中创建名为UsersRons的文件夹,而不是Users下的文件夹morons。
有什么建议吗?

你需要再加一个反斜杠:

CreateDirectory ("C:\\Users\\morons", NULL);

您需要管理员权限才能在C:\Users中创建或删除文件夹。确保以管理员身份运行.exe,以确保您具有这些权限。否则,CreateDirectory将失败

要获取返回的错误,请使用GetLastError。有关可能返回的错误的参考,请参阅

另外,您要查找的代码是

CreateDirectory ("C:\\Users\\morons", NULL);

由于在“白痴”之前需要有一个“\\”

跨平台制作windows应用程序,所以我们现在使用的是
CreateDirectory()
c++17标准

#包括
#包括
int main()
{
std::filesystem::创建_目录(“C:\\newfolder\\morons”);
}
需要将makefile更改为
-std=c++17
,并更新为支持c++17的GCC编译器


在visual studio中,按照以下步骤启用c++17

CreateDirectory(“c:\\Users\\morons”,NULL);我已经尝试过了,但这样做不会创建任何内容。您有权限在C:\Users中创建目录吗?你可能需要以管理员的身份运行程序才能获得必要的权限。我得到了所有的投票,这是非常不公平的,因为这是一个比我好得多的答案。有一个向上投票:-)…或者你可以使用前斜杠:
CreateDirectory(“c:/user/morons”)
。Windows要求在命令行上使用反斜杠,但API接受反斜杠或普通斜杠。
#include<iostream>
#include <filesystem>

int main()
{
    std::filesystem::create_directories("C:\\newfolder\\morons");
}