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