He leído algunas publicaciones sobre las mejores prácticas para cadenas y codificación de caracteres en C++, pero estoy luchando un poco para encontrar un enfoque de propósito general que me parezca razonablemente simple y correcto. ¿Podría solicitar comentarios sobre lo siguiente? Estoy inclinado a usar UTF-8 y UTF-32, y para definir algo como:Cadenas y codificación de caracteres en C++
typedef std::string string8;
typedef std::basic_string<uint32_t> string32;
La clase String8 se utilizaría para UTF-8, y que tiene un tipo separado es sólo un recordatorio de la codificación . Una alternativa sería que string8 fuera una subclase de std :: string y eliminar los métodos que no son del todo correctos para UTF-8.
La clase string32 se usaría para UTF-32 cuando se desea un tamaño de caracteres fijo.
Las funciones UTF-8 CPP, utf8 :: utf8to32() y utf8 :: utf32to8(), o funciones de contenedor más simples, se usarían para convertir entre las dos.
Tenga en cuenta que 'string8' sigue siendo del mismo tipo que' std :: string'; solo tiene un nombre diferente. –
¿Qué funciones de 'std :: basic_string' * son * correctas para UTF-8? – dalle
¿Qué le compra UTF-32 a través de wstring/Unicode? Por cierto, Visual Studio define 'u16string' y' u32string'. –