Вопрос

Я использую MultiByteToWideChar для преобразования моей строки в wstring.Сначала я пытаюсь получить необходимый размер для моей строки.Согласно документации, для этого необходимо передать 0 в качестве последнего аргумента.С использованием MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0); возвращает 0 как требуемый размер буфера wstring.Я проверил, что str также является непустой строкой.Что я здесь делаю не так?

Это было полезно?

Решение

Из Документация MSDN:

Для UTF-8 или кодовой страницы 54936 (GB18030, начиная с Windows Vista) для dwFlags должно быть установлено значение 0 или MB_ERR_INVALID_CHARS.В противном случае функция завершается с ошибкой ERROR_INVALID_FLAGS.

Вы используете CP_UTF8, но также передаете флаг MB_COMPOSITE, поэтому он не работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top