用C ++创建目录

时间:2015-06-19 11:38:52

标签: c++ visual-c++ file-io directory filesystems

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

但我不知道我该怎么做?

有人可以帮助我吗?

5 个答案:

答案 0 :(得分:3)

您可以使用Visual Studio的<filesystem>

有一个函数create_directory具有签名

template<class Path>
inline bool create_directory(
   const Path& Pval
);

您可以使用具有签名

SHGetKnownFolderPath找到用户的文档目录
HRESULT SHGetKnownFolderPath(
  _In_     REFKNOWNFOLDERID rfid,
  _In_     DWORD            dwFlags,
  _In_opt_ HANDLE           hToken,
  _Out_    PWSTR            *ppszPath
);

在这种情况下,您要使用的REFKNOWNFOLDERIDFOLDERID_Documents

请注意,这是Visual Studio特有的。 C++ <filesystem>库目前仍处于工作中(即实验性的),但希望很快就会到来!

答案 1 :(得分:1)

C ++ 11标准n3337不了解directories。 C ++ 17具有<filesystem>标准标头。

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

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

某些框架,尤其是QtPOCOBoost,在它们之上提供了通用包装。

答案 2 :(得分:0)

您可以使用<direct.h>中的简单mkdir创建目录

_mkdir("C:\\Data\\FolderName");

答案 3 :(得分:0)

对于Visual Studio:

System::IO::Directory::CreateDirectory(yourDir);

答案 4 :(得分:0)

如果您还没有C ++ 17并寻找与平台无关的解决方案,请使用 ghc::filesystem。 标头符号代码与C ++ 17(实际上是一个反向端口)兼容,以后很容易移植。