Constantes de caracteres de C++
Las constantes de caracteres son uno o más miembros del juego de caracteres básico de origen, el juego de caracteres en el que se escribe un programa, incluido entre comillas sencillas (').Se utilizan para representar los caracteres del juego de caracteres básico de la ejecución, el juego de caracteres en el equipo donde el programa se ejecuta.
Específicos de Microsoft
Para el compilador de Microsoft C/C++, los juegos de caracteres son ambos de origen y ejecución ASCII.
El juego de caracteres básico de origen consta de 96 caracteres: el carácter de espacio; los caracteres de control que representan la tabulación horizontal, la tabulación vertical, el formfeed, y la nueva línea; y los 91 caracteres siguientes:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
_{} [] # () el <>%: ¿;.? *+-/^&|¡~! =, \” '
El juego de caracteres básico de ejecución está formada por caracteres de caracteres básicos de origen establecidos, y también los caracteres de control que representan alerta, la reserva, el retorno de carro, y null.
Específico de Microsoft de FINAL
Hay tres tipos de constantes de caracteres:
Constantes de caracteres normales
constantes de Multicharacter
Constantes de caracteres anchos
[!NOTA]
Utilice constantes de caracteres anchos en lugar de constantes de multicharacter para garantizar portabilidad.
Las constantes de caracteres se especifican como uno o más caracteres incluidos entre comillas simples.Por ejemplo:
char ch = 'x'; // Specify normal character constant.
int mbch = 'ab'; // Specify system-dependent
// multicharacter constant.
wchar_t wcch = L'ab'; // Specify wide-character constant.
Observe que mbch es de intescrito.Si se declara como charescrito, el segundo byte no se conserva.Una constante de multicharacter tiene cuatro caracteres significativos; el especificar más de cuatro genera un mensaje de error.
Los caracteres de una constante de caracteres pueden ser cualquier carácter gráfico en el juego de caracteres de origen, a excepción de nueva línea, de barra diagonal inversa \, de escape 'y de comilla doble “, o se pueden especificar mediante una secuencia de escape.hay tres tipos de secuencias de escape: secuencias de escape simples, octales y hexadecimales.
Las secuencias de escape simples pueden ser cualquiera de los siguientes:
\' \" \? \\
\a \b \f \n \r \t \v
una secuencia de escape octal es una barra diagonal inversa seguida por una secuencia de hasta 3 dígitos octales.
Una secuencia de escape hexadecimal es una barra diagonal inversa, seguido del carácter x, seguido de una secuencia de dígitos hexadecimales.
Microsoft C++ admite normal, el multicharacter, y constantes de caracteres anchos.Utilice constantes de caracteres anchos para especificar miembros de juego de caracteres extendidos de ejecución (por ejemplo, para admitir una aplicación internacional).Las constantes de caracteres normales tienen el tipo char, las constantes de multicharacter tienen el tipo int, y las constantes de caracteres anchos tienen el tipo wchar_t.(El tipo wchar_t de No está definido en los archivos estándar STDDEF.H, STDLIB.H, y STRING.H. de inclusión.El carácter ancho funciona, sin embargo, tenga prototipado sólo en STDLIB.H.)
La única diferencia en la especificación entre las constantes normales y carácter ancho es que las constantes de caracteres anchos van precedidas de la letra L.Por ejemplo:
char schar = 'x'; // Normal character constant
wchar_t wchar = L'\x8119'; // Wide-character constant
La tabla siguiente muestra los caracteres reservados o nongraphic que son sistema dependiente o no permitido dentro de constantes de caracteres.estos caracteres se deben representar con secuencias de escape.
C++ reservadas o caracteres de Nongraphic
Carácter |
ASCII Representación |
ASCII Valor |
secuencia de escape |
---|---|---|---|
Nueva línea |
NL (LF) |
10 o 0x0a |
\n |
Tabulación horizontal |
HT |
9 |
\t |
Tabulación vertical |
VT |
11 o 0x0b |
\v |
Retroceso |
BS |
8 |
\b |
Retorno de carro |
CR |
13 o 0x0d |
\r |
Formfeed |
FF |
12 ó 0x0c |
\f |
Alerta |
BEL |
7 |
\a |
Barra diagonal inversa |
\ |
92 o 0x5c |
\\ |
signo de interrogación |
? |
63 o 0x3f |
\? |
Comilla simple |
' |
39 o 0x27 |
\' |
Comilla doble |
" |
34 o 0x22 |
\" |
número octal |
ooo |
— |
\ooo |
número hexadecimal |
hhh |
— |
\ xhhh |
Carácter null |
NUL |
0 |
\0 |
Si el carácter que sigue a la barra diagonal inversa no especifica una secuencia de escape válida, el resultado es implementación definido.En Microsoft C++, el carácter que sigue a la barra diagonal inversa se toma literalmente, como si el escape no estaba presente, y se emite una advertencia de nivel 1 (“secuencia de escape de carácter no reconocida”).
Las secuencias de escape octales, especificadas en el formato \el ooo, están compuestos de una barra diagonal inversa y un, dos, o tres caracteres octales.Las secuencias de escape hexadecimales, especificadas en el formato \ el xhhh, constan de caracteres \x seguido de una secuencia de dígitos hexadecimales.A diferencia de constantes octales de escape, no hay límite en el número de dígitos hexadecimales en una secuencia de escape.
Las secuencias de escape octales las termina el primer carácter que no es un dígito octal, o cuando se consideran tres caracteres.Por ejemplo:
wchar_t och = L'\076a'; // Sequence terminates at a
char ch = '\233'; // Sequence terminates after 3 characters
De forma similar, las secuencias de escape hexadecimales finalizan en el primer carácter que no es un dígito hexadecimal.Dado que los dígitos hexadecimales incluyen las letras a con f (y A con F), asegúrese de que la secuencia de escape finalice en el dígito previsto.
Dado que la comilla simple (') agrega constantes de caracteres, utilice la secuencia de escape \' para representar comillas sencillas incluidas.Las comillas dobles (") se puede representar sin una secuencia de escape.La barra diagonal inversa (\) es un carácter de continuación de línea cuando está colocado en el final de una línea.Si desea que un carácter de barra diagonal inversa para aparecer dentro de una constante de caracteres, debe barras diagonales inversas de tipo dos en fila (\\).(Vea fases de traducción en la referencia de preprocesador para obtener más información sobre la continuación de línea.)