Конвертировать wchar_t в wstring

Извините, что задаю такой простой вопрос, но я пытаюсь поместить wchar_T в строку wstring, но когда я распечатываю его, чтобы проверить его, я получаю мусор из строки wstring. Код ниже:

 wchar_t windowsDir[255];
 memset(windowsDir, NULL, sizeof(windowsDir));
 GetWindowsDirectory(windowsDir, 255);
 std::wstring winDir(windowsDir);

 if (debug){
   wprintf(L"Windows Dir is %s\r\n", windowsDir);
   wprintf(L"Windows Dir is %s\r\n", winDir);
 }

Насколько я могу судить по примерам, я делаю правильные вещи, поэтому не могу понять, стесняюсь, я получаю мусор на экране.

Заранее спасибо за помощь,

Ура,

Нил

1 ответ

Решение

Вы используете wprintf, Эта функция не может принять std::wstring, Основная причина, по которой вы никогда не должны использовать printf Кроме того, функции друзей и любых переменных аргументов заключаются в том, что они абсолютно не типизированы и не могут дополнительно справляться с не POD-типами, в том числе с любым типом библиотеки C++ Standard.

C++ IOstream будет функционировать совершенно правильно здесь.

Другие вопросы по тегам