Что такое Linux-эквивалент: MultiByteToWideChar и WideCharToMultiByte?

Я работаю с классом, который обертывает std::wstring, этот код должен быть кроссплатформенным, есть ли эквиваленты функциям Windows: MultiByteToWideChar и WideCharToMultiByte в Linux?

Спасибо.


person NSA    schedule 18.07.2010    source источник
comment
Помните, что в GNU/Linux std::wstring в два раза больше, чем std::wstring в Windows.   -  person rubenvb    schedule 19.07.2010
comment
Для этого существуют функции C99 mbtowc и wctomb.   -  person Johannes Schaub - litb    schedule 19.07.2010
comment
@Johannes Schaub: mbtowc и wctomb были фактически добавлены в нормативную поправку 1 в 1995 году.   -  person caf    schedule 19.07.2010


Ответы (2)


Эквивалентами Linux являются iconv функции iconv_open, iconv и iconv_close (скажем, man 3 iconv_open и т. д. для документации). Для кросс-платформенных приложений используйте специальные библиотеки, такие как ICU. Такие библиотеки уже содержат свои собственные строковые классы; нет необходимости оборачивать std::wstring.

person Philipp    schedule 18.07.2010

mbtowc и wctomb являются наиболее прямыми эквивалентами, но обратите внимание, что они работают с многобайтовым набором символов, соответствующим текущей локали LC_CTYPE (которую можно изменить с помощью setlocale()).

person caf    schedule 19.07.2010