Я пытаюсь создать каталог, чтобы я мог поместить в него файл.
Мой код:
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*
(AKA LPCSTR
):
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
в зависимости от конфигурации проекта. Вы можете использовать любое из этих трех имен по своему усмотрению.
Других решений пока нет …