Red de conocimiento de recetas - Recetas gastronómicas - Acerca del problema de eliminación de la matriz wchar_t

Acerca del problema de eliminación de la matriz wchar_t

El número de caracteres (incluido el número de caracteres chinos) en wstring viene dado por. tamaño() o . longitud(). No es necesario personalizarlo. Entonces, la longitud de la "longitud china real" que marcó allí es igual a wstring.length()/2,

la "longitud de mordida predeterminada del sistema" es igual a wstring.length(), lo siguiente La conversión debe ser mal utilizado.

Tal vez su comprensión de la longitud sea incorrecta. Puede entender "longitud" como "longitud de cadena de bytes", razón por la cual existe un requisito de conversión personalizado tan extraño. La longitud de wstring se refiere a la cantidad de caracteres de la cadena. Cada carácter chino tiene 1 carácter de longitud. Multiplique la longitud del carácter por 2 para obtener la longitud del byte; Wchar_t suele ser equivalente a utf16.

La primera definición de caracteres anchos wchar_t es retener varios "caracteres locales" (teóricamente se pueden codificar en GBK, BIG5, etc.). Pero, de hecho, tanto los compiladores VC como GCC definen caracteres anchos como UTF16LE. Entonces, wchar y otros suelen usar UTF16LE. Ahora C11 deja más claro que char16_t coloca UTF16, BE o le, lo que permite al compilador definir caracteres anchos wchar_t para admitir codificaciones locales.