如何在不使用宽字符串的情况下创建目录C++?



>我正在尝试创建一个目录,以便我可以在其中放置一个文件。

我的代码:

string Set;
...
CreateDirectory("Game/Sets/" + Set, NULL); // I'm trying to have something like this. CreateDirectory needs wide strings, but Set is narrow.

变量Set是一个窄字符串。

我想我可能需要CreateDirectory以外的东西,但我不知道是什么。

您必须使用string::c_str()成员函数来获取相应的const char*(AKALPCSTR(:

string Set;
...
CreateDirectory(("Game/Sets/" + Set).c_str(), NULL);

但最好使用临时变量:

string Set;
...
string fullDir = "Game/Sets/" + Set;
CreateDirectory(fullDir.c_str(), NULL);

您可能会编译 UNICODE 程序。如果是这种情况,您将收到一个错误,因为const char*不能转换为const wchar_t*.解决方案是调用函数的 ANSI 版本:

CreateDirectoryA(fullDir.c_str(), NULL);

如果您愿意,即使没有错误也可以使用ANSI功能,只是为了保持一致。

请记住,CreateDirectory实际上是一个宏,根据项目配置扩展到CreateDirectoryWCreateDirectoryA。您可以根据需要使用这三个名称中的任何一个。

最新更新