Как создать каталог без использования широких строк в 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но я не знаю что.

1

Решение

Вы должны использовать 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 в зависимости от конфигурации проекта. Вы можете использовать любое из этих трех имен по своему усмотрению.

3

Другие решения

Других решений пока нет …