c++ - que - Reemplazo de encabezado obsoleto<codecvt>
seo tags html (3)
Un poco de primer plano: mi tarea requería convertir el archivo XML UTF-8 a UTF-16 (con el encabezado adecuado, por supuesto).
Entonces, busqué las formas habituales de convertir UTF-8 a UTF-16, y descubrí que uno debería usar plantillas de
<codecvt>
.
Pero ahora, cuando está en deprecated , me pregunto cuál es la nueva forma común de hacer la misma tarea.
(No me importa usar Boost en absoluto, pero aparte de eso, prefiero permanecer lo más cerca posible de la biblioteca estándar).
La nueva forma es ... lo escribes tú mismo. O simplemente confíe en la funcionalidad obsoleta. Con suerte, el comité de estándares no eliminará codecvt hasta que haya un reemplazo que funcione.
Pero en la actualidad, no hay uno.
std::codecvt
plantilla
std::codecvt
de
<locale>
no está en desuso.
Para UTF-8 a UTF-16, todavía existe la especialización
std::codecvt<char16_t, char, std::mbstate_t>
.
Sin embargo, dado que
std::wstring_convert
y
std::wbuffer_convert
están en desuso junto con las facetas de conversión estándar, no hay una manera fácil de convertir cadenas usando las facetas.
Entonces, como Bolas ya respondió: Impleméntelo usted mismo (o puede usar una biblioteca de terceros, como siempre) o siga usando la API en desuso.
No te preocupes por eso.
Según P0618 :
este componente de la biblioteca debe retirarse al Anexo D, junto a él, hasta que se estandarice un reemplazo adecuado .
Por lo tanto, aún puede usarlo hasta que se realice una nueva versión estandarizada y más segura.