tag que name keywords importantes google etiqueta description c++ utf-8 c++1z c++17 utf-16 codecvt

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.