CreateDirectory не создает каталог VS2017 c ++ - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь создать каталог (если он еще не существует) в моем приложении, и я использую функцию CreateDirectory, проблема в том, что она не создает папку:

string folderfile = "C:\\Screenshots";

CreateDirectory(LPCTSTR(folderfile.c_str()), NULL);

Я выполняю Visual Studio в режиме администратора.

В чем может быть проблема?

1 Ответ

0 голосов
/ 30 января 2019

На основании приведения к LPCTSTR мой хрустальный шар говорит мне, что вызов CreateDirectory(folderfile.c_str(), NULL); не скомпилирован для вас.Это потому, что Visual Studio по умолчанию компилируется в режиме Unicode и вам необходимо использовать wstring.

У вас есть несколько решений:

  1. Переключить проектнабор символов режим ANSI :
    Свойства проекта -> Общие -> Набор символов -> Использование несколькихНабор символов байтов
  2. Вызов CreateDirectoryA явно:

    string folderfile = "C:\\Screenshots";
    CreateDirectoryA(folderfile.c_str(), NULL);

  3. Продолжайте использоватьИспользуйте кодировку Unicode и используйте wstring:

    wstring folderfile = L"C:\\Screenshots";
    CreateDirectory(folderfile.c_str(), NULL);

Также не забудьте проверить возвращаемое значение (BOOL)и позвоните GetLastError(), если это false.Таким образом, вы можете узнать , почему вызов не удался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...