如何在C ++中创建目录

问题描述 投票:10回答:3

我刚刚发现了一些代码,这些代码使我无需使用system()即可使用Windows API创建目录。唯一的问题是我无法在子目录中创建目录。例如

#include<windows.h>

int main(){
   CreateDirectory ("C:\\random", NULL);
   return 0;
}

在C中创建一个名为random的文件夹。

但是如果我这样做

#include<windows.h>

int main(){
   CreateDirectory ("C:\\Users\morons", NULL);
   return 0;
}

它将在C che文件夹中创建名为Usersmorons的文件夹,而不是在Users下创建文件夹morons。有什么建议吗?

c++ windows api c++17 mkdir
3个回答
38
投票

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

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

的“返回值”部分。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx

而且,您正在寻找的代码是

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

由于“白痴”之前必须有一个“ \\”


21
投票

您需要在其中添加另一个反斜杠:

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

1
投票

[使Windows应用程序跨平台,正在使用CreateDirectory() c ++ 17标准现在具有std::filesystem::create_directories

#include<iostream>
#include <filesystem>

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

需要将makefile更改为-std=c++17,并更新为支持c ++ 17的GCC编译器。

在Visual Studio中,按照步骤here启用c ++ 17

© www.soinside.com 2019 - 2024. All rights reserved.