2009-01-11 17 views
16

Estoy buscando una biblioteca de cadenas portátil y fácil de usar para C/C++, que me ayuda a trabajar con entrada/salida Unicode. En el mejor de los casos, almacenará sus cadenas en memoria en UTF-8, y me permitirá convertir cadenas desde ASCII a UTF-8/UTF-16 y viceversa. No necesito mucho más además de eso (vale, una licencia liberal no va a doler). He visto que C++ viene con un encabezado <locale>, pero esto parece funcionar solamente en wchar_t, que puede o no estar codificado en UTF-16, además, no estoy seguro de cuán bueno es esto en realidad.Biblioteca de cadenas Unicode portátil y simple para C/C++?

Los casos de uso son por ejemplo: en Windows, las API Unicode esperan cadenas UTF-16, y necesito convertir cadenas ASCII o UTF-8 para pasarlas a la API. Lo mismo ocurre con el análisis XML, que puede venir con UTF-16, pero en realidad solo quiero procesar internamente con UTF-8 (o, si va a cambiar internamente a UTF-16, necesitaré una conversión a ese de todas formas).

Hasta ahora, he echado un vistazo al ICU, que es bastante grande. Además, quiere ser construido usando sus propios archivos de proyecto, mientras que yo preferiría una biblioteca para la cual hay un proyecto CMake o que es fácil de construir (algo como compilar todos estos archivos .c, enlace y bueno para ir) , en lugar de enviar algo grande como la UCI a lo largo de mi solicitud.

¿Conoces esa biblioteca, que también se está manteniendo? Después de todo, este parece ser un problema bastante básico.

Respuesta

19

UTF8-CPP parece ser exactamente lo que quiere.

+0

¿Alguna idea de lo bueno que es eso? Acabo de echarle un vistazo, parece ser muy simple, pero me gustaría escuchar algunas opiniones al respecto. – Anteru

+3

Bueno, no escucharás ninguna opinión imparcial de mí porque soy el autor :) Sin embargo, no he tenido ningún error durante más de un año, y la gente realmente lo está usando (250-300 descargas al mes) así que creo que no es tan malo :) –

+1

+1 para UTF8-CPP. Lo uso en todas partes donde debo lidiar con cadenas UTF8 en mi código C++ (y algunas veces utf16). Muy fácil de usar, y muy buena API C++ 'ish. –

2

Recomiendo que mires la biblioteca GNU iconv.

+1

iconv solo le ofrece la capacidad de convertir entre diferentes codificaciones. No obtienes cosas como funciones len(), convertir mayúsculas y minúsculas, etc. –

Cuestiones relacionadas