c++ - Usando char16_t y char32_t en I/O
c++11 iostream (1)
C ++ 11 introduce char16_t
y char32_t
para facilitar el trabajo con cadenas de texto codificadas en UTF-16 y UTF-32. Pero la biblioteca <iostream>
aún es compatible con el wchar_t
definido por la implementación para E / S de múltiples bytes.
¿Por qué no se ha agregado el soporte para char16_t
y char32_t
a la biblioteca <iostream>
para complementar el soporte wchar_t
?
En la propuesta de compatibilidad con Minimal Unicode para la biblioteca estándar (revisión 2) , se indica que solo había compatibilidad entre el Grupo de trabajo de bibliotecas para admitir los nuevos tipos de caracteres en cadenas y facetas de codecvt. Al parecer, la mayoría se oponía a la compatibilidad con iostream, fstream, facetas distintas de codecvt y regex.
Según las actas de la reunión de Portland en 2006, "el LWG está comprometido con el soporte completo de Unicode, pero no pretende duplicar la biblioteca con las variantes de caracteres de Unicode de las instalaciones de la biblioteca existentes". No he encontrado ningún detalle, sin embargo, creo que el comité considera que la interfaz de la biblioteca actual no es adecuada para Unicode. Una posible queja podría ser que se diseñó teniendo en cuenta los caracteres de tamaño fijo, pero Unicode deja completamente de lado que, si bien los datos de Unicode pueden usar puntos de código de tamaño fijo, no limitan los caracteres a puntos de código únicos.
Personalmente, creo que no hay razón para no estandarizar el soporte mínimo que ya se proporciona en varias plataformas (Windows usa UTF-16 para wchar_t, la mayoría de las plataformas Unix usan UTF-32). El soporte Unicode más avanzado requerirá nuevas instalaciones de biblioteca, pero el soporte de char16_t y char32_t en iostreams y facetas no se interpondrá en el camino, pero habilitaría el i / o básico de Unicode.