Я работаю с классом, который обертывает std::wstring, этот код должен быть кроссплатформенным, есть ли эквиваленты функциям Windows: MultiByteToWideChar и WideCharToMultiByte в Linux?
Спасибо.
Я работаю с классом, который обертывает std::wstring, этот код должен быть кроссплатформенным, есть ли эквиваленты функциям Windows: MultiByteToWideChar и WideCharToMultiByte в Linux?
Спасибо.
Эквивалентами Linux являются iconv
функции iconv_open
, iconv
и iconv_close
(скажем, man 3 iconv_open
и т. д. для документации). Для кросс-платформенных приложений используйте специальные библиотеки, такие как ICU. Такие библиотеки уже содержат свои собственные строковые классы; нет необходимости оборачивать std::wstring
.
mbtowc
и wctomb
являются наиболее прямыми эквивалентами, но обратите внимание, что они работают с многобайтовым набором символов, соответствующим текущей локали LC_CTYPE
(которую можно изменить с помощью setlocale()
).
mbtowc
иwctomb
были фактически добавлены в нормативную поправку 1 в 1995 году. - person caf   schedule 19.07.2010