Да, в <cstdlib>
у вас есть mbstowcs()
и wcstombs()
.
Я ранее опубликовал код о том, как использовать это, может быть, это полезно. Убедитесь, что вы запустили функцию дважды, один раз, чтобы получить длину, и один раз, чтобы выполнить фактическое преобразование. (Вот небольшая дискуссия о том, что означают функции.) Вместо ручного массива char я, вероятно, предпочел бы std::vector<char>
или std::vector<wchar_t>
, если подумать об этом.
Обратите внимание, что wchar_t
не имеет ничего общего с Unicode. Если вам нужен Unicode, вам необходимо выполнить дальнейшее преобразование из wchar_t
в Unicode, используя отдельную библиотеку (например, iconv()
), и не используйте wchar_t
в качестве типа данных для кодовых точек Unicode. Вместо этого используйте uint32_t
в устаревших системах или char32_t
в современных.