【问题标题】:How to create a directory in C++如何在 C++ 中创建目录
【发布时间】:2012-02-14 09:58:27
【问题描述】:

我刚刚找到了一小段代码,它可以让我在不使用 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;
}

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

【问题讨论】:

  • CreateDirectory ("C:\\Users\\morons", NULL);
  • 我试过了,但这种方式并没有创造任何东西。
  • 您是否有权在 C:\Users 中创建目录?您可能需要以管理员身份运行该程序以获得必要的权限。
  • 那个目录真的让我哈哈大笑!

标签: c++ windows api c++17 mkdir


【解决方案1】:

您需要管理员权限才能在 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);

因为“白痴”之前需要有一个“\\”

【讨论】:

  • 我得到了所有的赞成票,这是非常不公平的,因为这是一个比我更好的答案。投赞成票:-)
【解决方案2】:

你需要另一个反斜杠:

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

【讨论】:

  • ...或者您可以使用正斜杠:CreateDirectory("c:/user/morons")。 Windows 需要在命令行上使用反斜杠,但 API 接受反斜杠或普通反斜杠。
【解决方案3】:

做一个跨平台的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

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 2023-03-14
    • 2010-10-15
    • 2015-09-05
    • 2012-09-29
    • 1970-01-01
    • 2011-02-12
    • 2010-10-20
    相关资源
    最近更新 更多