¿Qué significa la 'L' delante de una cadena en C ++?
174
this->textBox1->Name= L"textBox1";
Aunque parece funcionar sin el L, ¿cuál es el propósito del prefijo? La forma en que se usa ni siquiera tiene sentido para un programador de C incondicional.
No estás usando C ++. Es opcional en un programa C ++ / CLI si el literal de cadena solo contiene caracteres ASCII. El compilador lo convierte automáticamente en una cadena codificada utf-16 que está internada de cualquier manera.
Hans Passant
77
@Hans: "No estás usando C ++" ¿Cómo lo sabes?
ligereza corre en órbita el
Respuestas:
138
Es wchar_tliteral, para un conjunto de caracteres extendido. Wikipedia tiene una pequeña discusión sobre este tema y ejemplos de c ++.
nota: no es necesariamente de 16 bits. Es específico del sistema operativo.
Batman
3
Creo que en linux wchar_t es de 32 bits
user10607
8
"En el uso diario no es necesario usar wchar_t" es un arbitraje arbitrario. Como hablante no nativo de inglés, puedo decir que debo usarlo todo el tiempo ...
Heyji
18
Significa que el texto se almacena como wchar_tcaracteres en lugar de charcaracteres antiguos simples .
(Originalmente dije que significaba unicode. Me equivoqué al respecto. Pero puede usarse para unicode).
L es un prefijo utilizado para cadenas anchas. Cada carácter usa varios bytes (dependiendo del tamaño de wchar_t). La codificación utilizada es independiente de este prefijo. Quiero decir que no debe ser necesariamente UTF-16, a diferencia de lo que se indica en otras respuestas aquí.
Respuestas:
Es
wchar_t
literal, para un conjunto de caracteres extendido. Wikipedia tiene una pequeña discusión sobre este tema y ejemplos de c ++.fuente
'L' significa
wchar_t
que, a diferencia de un carácter normal, requiere 16 bits de almacenamiento en lugar de 8 bits. Aquí hay un ejemplo:A
wchar_t
es dos veces más grande que un simple personaje. En el uso diario, no necesita usar wchar_t, pero si usa windows.h, lo va a necesitar.fuente
Significa que el texto se almacena como
wchar_t
caracteres en lugar dechar
caracteres antiguos simples .(Originalmente dije que significaba unicode. Me equivoqué al respecto. Pero puede usarse para unicode).
fuente
Esto significa que se trata de un carácter ancho,
wchar_t
.Similar a
1L
ser un valor largo.fuente
Significa que es una matriz de caracteres anchos (
wchar_t
) en lugar de caracteres estrechos (char
).Es solo una cadena de un tipo diferente de carácter, no necesariamente una cadena Unicode .
fuente
L es un prefijo utilizado para cadenas anchas. Cada carácter usa varios bytes (dependiendo del tamaño de
wchar_t
). La codificación utilizada es independiente de este prefijo. Quiero decir que no debe ser necesariamente UTF-16, a diferencia de lo que se indica en otras respuestas aquí.fuente