2010-07-18 22 views
11

Estoy trabajando con una clase que envuelve std :: wstring, este código debe ser multiplataforma, ¿hay equivalentes a las funciones de Windows: MultiByteToWideChar & WideCharToMultiByte en Linux?¿Cuál es el equivalente de Linux de: MultiByteToWideChar & WideCharToMultiByte?

Gracias.

+0

Recuerde que en GNU/Linux, std :: wstring es dos veces el tamaño de std :: wstring en Windows. – rubenvb

+4

Existen las funciones C99 y mbtowc wctomb para este –

+0

@Johannes Schaub: 'mbtowc' y' wctomb' se agregaron en realidad en la Enmienda Normativa 1 de 1995. – caf

Respuesta

12

equivalentes El Linux son las funciones iconviconv_open, iconv y iconv_close (digamos man 3 iconv_open etc., para la documentación). Para aplicaciones multiplataforma, use bibliotecas dedicadas como ICU en su lugar. Tales bibliotecas ya contienen sus propias clases de cadenas; no hay necesidad de ajustar std::wstring.

4

mbtowc y wctomb son los equivalentes más directos, pero tenga en cuenta que operan en el conjunto de caracteres de varios bytes correspondiente a la corriente LC_CTYPE configuración regional (que se puede cambiar con setlocale()).

Cuestiones relacionadas