在 C++ 中创建目录

Jes*_*tin 2 c++ filesystems directory file-io visual-c++

我正在用 DirectX 和 C++ 制作一个简单的游戏。但我想在 Documents 中为设置等创建一个目录。

但我不知道我需要怎么做?

有人能帮我吗?

Bas*_*tch 8

C++11 标准n3337不知道目录。C++17 有<filesystem>标准头文件。

如果您的实现符合 C++17(可能不是),请使用 std::filesystem::create_directory

否则,使用操作系统原语。请注意,目录的概念可以是特定于操作系统的(即在一个操作系统中与另一个操作系统不同,甚至可能在不同的文件系统之间)。对于 Windows,研究WinAPI(所以考虑CreateDirectoryA)。对于 Linux,查看它的syscalls(2)(所以考虑mkdir(2)

一些框架,特别是QtPOCOBoost,在它们之上提供了通用包装器。


gam*_*n67 5

您可以使用一个简单的 mkdir from<direct.h>来创建目录

_mkdir("C:\\Data\\FolderName");
Run Code Online (Sandbox Code Playgroud)

  • 这是仅适用于 Windows 的解决方案。(这与这个问题很好相关) (5认同)

Cor*_*mer 2

您可以使用 Visual Studio 的<filesystem>

有一个create_directory具有签名的函数

template<class Path>
inline bool create_directory(
   const Path& Pval
);
Run Code Online (Sandbox Code Playgroud)

SHGetKnownFolderPath您可以找到具有签名的用户的文档目录

HRESULT SHGetKnownFolderPath(
  _In_     REFKNOWNFOLDERID rfid,
  _In_     DWORD            dwFlags,
  _In_opt_ HANDLE           hToken,
  _Out_    PWSTR            *ppszPath
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,REFKNOWNFOLDERID您要使用的是FOLDERID_Documents

请注意,这是特定于 Visual Studio 的。C++<filesystem>库目前仍在开发中(即实验性的),但希望很快就会推出!