>我正在尝试创建一个目录,以便我可以在其中放置一个文件。
我的代码:
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
实际上是一个宏,根据项目配置扩展到CreateDirectoryW
或CreateDirectoryA
。您可以根据需要使用这三个名称中的任何一个。