2011-05-13 58 views
14

¿Cuál es el destino de wchar_t en C++ 0x teniendo en cuenta los nuevos tipos de caracteres char8_t, char16_t y char32_t?¿Cuál es el destino de wchar_t en C++ 0x?

Más importante aún, ¿qué pasa con std::wstring, std::wcout, etc.?

¿Están las clases de la familia w * obsoletas?
¿Hay nuevas clases std::ustring y std::Ustring para los nuevos tipos de caracteres?

+1

Ver http://stackoverflow.com/questions/872491/new-unicode-characters-in-c0x. No responde todas sus preguntas (es decir, obsoleto), pero supongo que wchar_t no va a ser desaprobado. Ya hay demasiados códigos que ya lo están usando. –

+2

@Boaz Yaniv: sin mencionar que desaprobar usualmente no significa nada. Los implementadores implementan cosas desaprobadas porque necesitan compilar software antiguo, y nadie va a reescribir el software anterior solo por una advertencia de desaprobación. –

+0

Nadie va a reescribir el software defectuoso por una advertencia de desaprobación, pero honestamente encontrar y reemplazar no es tan importante. Ya hemos eliminado NULL a favor de 'nullptr' en todo nuestro código. – AJG85

Respuesta

8

No ocurre nada con wchar_t, sigue siendo específico de la implementación (y es compatible con C).

Los nuevos tipos char16_t y char32_t tienen una semántica definida en el nuevo estándar. El viejo wchar_t podría ser equivalente a uno de esos, pero es probable que sea diferente en diferentes implementaciones. O ninguno de ellos, en algunos sistemas.

Tendrá typedefs u16string y u32string para las cadenas de los nuevos tipos de caracteres, pero no las nuevas corrientes estándar.

+0

¿Puedes confirmar que std :: string debe contener caracteres utf8? ¿O hay otro tipo de esto? u8string? – Klaim

+3

No hay 'u8string'. 'char' tiene un significado sobrecargado de" unidad de código UTF-8 "," miembro del juego de caracteres de ejecución básico "o" byte ". – dan04

+2

@Klaim - Como dice Dan, std :: string podría (no debería) contener UTF-8. Depende de la aplicación decidir la interpretación. El lenguaje ya tiene tres tipos de caracteres estrechos, ¡y el comité dudaba en agregar un cuarto! –