Cómo utilizar C ++ String Literal

How Use C String Literal



El teclado de la computadora tiene caracteres impresos. Cuando presionas una tecla, ves el personaje en la pantalla. Nota: el espacio también es un carácter. Un literal de cadena es una secuencia de caracteres. Este artículo explica cómo utilizar cadenas literales de C ++. Debe conocer las matrices y punteros de C ++ para comprender este artículo.

Carácter literal

Un carácter literal es un carácter entre comillas simples. Entonces,







carbonizarseident1= 'A'; carbonizarseident2= 'b'; carbonizarseident3= '4'; carbonizarseident4= '6';

son todas diferentes definiciones de personajes. Tenga en cuenta que un dígito entre comillas simples es un carácter y no un número entero.



Una secuencia de escape como (ver más abajo) entre comillas simples, es un carácter. Entonces,



carbonizarseident1= ''';

es un personaje.





Un solo símbolo entre comillas dobles no es un carácter; es una cadena de un carácter. Entonces, A o c o 2 no es un carácter, sino una cadena de un carácter cada uno.

La variable de un char se puede reasignar, más adelante en el programa, de la siguiente manera:



carbonizarseident= 'x';
ident= 'Y';

Para evitar que se cambie un carácter asignado a un identificador, más adelante en el programa, preceda la definición con la palabra reservada, const, de la siguiente manera:

constante carbonizarseident= 'D';

Se dice que la variable ident es de solo lectura.

Literal de cadena

Un literal de cadena es una secuencia de caracteres entre comillas dobles. Entonces,

carbonizarseident1[] = 'Te quiero'; carbonizarseident2[] = 'Odio a 3 de ustedes'; carbonizarseident3[]
= 'somos el Mundo'; carbonizarseident4[] = '¡Hola Mundo!';

son todas definiciones diferentes de cadenas literales. Tenga en cuenta el uso de comillas dobles. No hay nada como una variable ordinaria para una cadena. Un literal de cadena es una matriz de caracteres, donde en lugar de delimitar con {}, la secuencia se delimita con. Los caracteres no están separados por comas. Cualquier número mayor que el número de caracteres en el literal de cadena se puede colocar entre corchetes. Sin embargo, es mejor dejar los corchetes vacíos.

Un solo carácter entre comillas dobles no es un carácter; es una cadena de un carácter. Entonces, A o c o 2 no es un carácter, sino una cadena de un carácter cada uno.

Una variable de cadena no permite la reasignación del literal completo, más adelante en el programa, ver más abajo. Sin embargo, los caracteres individuales se pueden reasignar; consulte a continuación.

Cita simple y doble en carácter o literal

Para tener una comilla simple como personaje, haz algo como,

carbonizarseident= ''';

Para tener una comilla doble como carácter en una cadena literal, haga algo como,

carbonizarseident[] = 'lejos'cd';

La barra invertida se utiliza en una secuencia de escape para evitar conflictos con los delimitadores. Para tener una comilla doble como carácter, no hay necesidad de la barra invertida: '' está bien. Para tener una comilla simple en un literal de cadena, no es necesaria la barra invertida: ab'cd está bien.

Dado que la barra invertida se usa para escapar de un carácter, debe escaparse con otra barra invertida cuando se usa como un carácter o en una cadena literal.

Secuencia de escape

Una secuencia de escape es una de las siguientes:

' '? \ a  F orte r> t v

Cada secuencia de escape normalmente se escribe como un carácter entre comillas simples o como una secuencia de escape entre comillas dobles.

  • ’: Se utiliza como un carácter de comillas simples, entre comillas simples.
  • : se usa como un carácter de comillas dobles, dentro de un literal.
  • ? : ya que ? es un carácter reservado, debe escaparse en un literal.
  • \: la barra invertida debe escaparse como un carácter o en un literal de cadena, para no dar lugar a ningún otro significado.
  • a: suena una campana de alarma una vez, cuando se usa como un carácter o dentro de una cadena literal.
  • b: resulta como un retroceso en la pantalla dentro de una cadena literal, quitando el carácter anterior.
  • f: hace que la página siguiente se alimente a la impresora cuando se usa como un carácter o dentro de un literal.
  • r: devuelve el cursor, donde se imprimirá el siguiente carácter, pero dentro de la línea actual.
  • n: devuelve el cursor al principio de la línea siguiente o simplemente a la línea siguiente, según el sistema operativo.
  • t: crea una pestaña horizontal.
  • v: crea una pestaña vertical.

Operaciones con personajes

Concatenación

En la definición, dos literales de cadena se pueden unir con el espacio de la siguiente manera:

carbonizarseident[] = 'abc' 'def';
costo<<ident<< ' orte';

La salida es: abcdef. Esta definición se puede extender a más de dos literales. Nota: la declaración es una definición, no solo una asignación. La definición puede incluso continuar a la siguiente línea con un espacio que separa las líneas de la siguiente manera:

carbonizarseident[] = 'abc' 'def'
'tomar nota';
costo<<ident<< ' orte';

La salida es abcdefghi.

Nota: Los caracteres no se pueden concatenar de esta forma, ya que las comillas simples del carácter no pueden tener más de un símbolo.

Operadores de igualdad

Los mismos caracteres en el mismo caso son iguales. No son iguales si no son del mismo caso. Considerar,

resultado bool= 'B' == 'B';
costo<<resultado<< ' orte';

== significa igual, mientras que = significa asignado y no igual. La salida es 1 para verdadero. Considerar,

resultado bool= 'B' == 'b';
costo<<resultado<< ' orte';

La salida es 0 para falso. Considerar,

resultado bool= 'b' == 'c';
costo<<resultado<< ' orte';

La salida es 0 para falso. Considerar,

resultado bool= 'B' != 'B';
costo<<resultado<< ' orte';

! = significa no igual, mientras que = significa asignado y no igual. La salida es 0 para falso. Considerar,

resultado bool= 'B' != 'b';
costo<<resultado<< ' orte';

La salida es 1 para verdadero. Considerar,

resultado bool= 'b' != 'c';
costo<<resultado<< ' orte';

La salida es 1 para verdadero.

Entonces, == y! = Son operadores de igualdad.

Operadores relacionales

Para los caracteres ordinarios en C ++, en orden ascendente, los números van antes de las letras mayúsculas, que vienen antes de las minúsculas.

Entonces= se explican de manera similar.

La cadena literal como objeto

La matriz es un puntero constante al comienzo de una secuencia de tipo de datos en particular. De manera similar, la cadena es un puntero constante al comienzo de una secuencia de caracteres. Compare las siguientes definiciones:

En tarr[] = {3, 4, 5, 6, 7};
carbonizarsepag[] = {'en', 'o', 'metro', 'a', 'norte'};
carbonizarseStri[] = 'mujer';

La primera matriz es una matriz de entradas y tiene cinco elementos. La segunda y tercera matrices son matrices de caracteres con diferentes nombres, pero el mismo número de elementos. La segunda y tercera matrices son iguales, pero por sus nombres. El contenido de texto de la segunda matriz está delimitado por llaves; los caracteres están separados por comas y cada carácter está entre comillas simples. El contenido de texto de la tercera matriz está delimitado por comillas dobles; los caracteres no están separados por comas y cada carácter no está entre comillas simples. La segunda y tercera matrices son dos formas de producir una cadena, siendo la tercera forma la mejor.

arr es un puntero constante al primer elemento de su matriz, lo que significa que arr siempre apuntará a la ubicación que tiene el número entero, 3, incluso si se cambia el valor de 3. El tamaño de la matriz, cinco elementos, no permanece constante. Sin embargo, cada uno de los valores de la matriz se puede cambiar.

str es un puntero constante al primer elemento de su matriz, lo que significa que str siempre apuntará a la ubicación que tiene el carácter 'w' incluso si se cambia el valor de 'w'. El tamaño de la matriz de caracteres, cinco elementos, no permanece constante. Sin embargo, cada uno de los valores del literal se puede cambiar.

Stri es un puntero constante al primer elemento de su literal (matriz), lo que significa que Stri siempre apuntará a la ubicación que tiene el carácter, w incluso si se cambia el valor de w. El tamaño de la cadena literal (matriz), cinco elementos, en realidad no permanece constante. Sin embargo, cada uno de los valores del literal se puede modificar.

¿Qué es constante en una matriz o literal de cadena? La dirección de memoria del primer elemento de la matriz o literal permanece como el valor del nombre (identificador) de la matriz o literal y no se puede cambiar. Bueno, el tamaño de la matriz o literal no permanece constante. Cada valor de la matriz o literal se puede cambiar. El siguiente código muestra cómo se ha cambiado el cuarto elemento de cada una de las matrices:

En tarr[] = {3, 4, 5, 6, 7};
carbonizarsepag[] = {'en', 'o', 'metro', 'a', 'norte'};
carbonizarseStri[] = 'mujer';

arr[3] = 9;
pag[3] = 'Y';
Stri[3] = 'Y';

costo<<arr[3] << ' orte';
costo<<pag<< ' orte';
costo<<Stri<< ' orte';

La salida es:

9
Mujeres mujeres
mujeres

Tenga en cuenta que se puede acceder a los elementos de un literal de cadena definido, como para la tercera definición anterior, con el índice de matriz (subíndice). El motivo de la segunda línea de la salida se da a continuación.

Subíndice de definición

Tenga en cuenta que en las definiciones anteriores, no hay un número entero para el subíndice. Cuando el programador no pueda determinar fácilmente el número de elementos, se debe omitir el número entero del subíndice. Cualquiera que sea el caso, el número entero no debe ser menor que el número de elementos de la matriz.

Para el literal de cadena, el número entero debe ser al menos 1 más alto que el número de caracteres de la cadena. Esto se debe a que el compilador siempre agrega el carácter nulo ( 0), al final de una matriz que es una cadena, delimitada por comillas dobles. El carácter nulo no se agrega al final de la segunda matriz anterior, porque no es una cadena oficial. La tercera matriz es una cadena oficial. El siguiente código muestra los valores mínimos de subíndice.

En tarr[5] = {3, 4, 5, 6, 7};
carbonizarsepag[5] = {'en', 'o', 'metro', 'a', 'norte'};
carbonizarseStri[6] = 'mujer';

Para que la segunda definición sea una cadena oficial, el carácter nulo debe agregarse de la siguiente manera:

En tarr[5] = {3, 4, 5, 6, 7};
carbonizarsepag[6] = {'en', 'o', 'metro', 'a', 'norte', ''};
carbonizarseStri[6] = 'mujer';

La salida debería ser ahora,

9
mujeres
mujeres

sin las segundas mujeres. Tenga en cuenta que el subíndice correspondiente para la segunda matriz es 6, y no 5 como era.

Valores literales constantes

Para evitar que se modifique cualquier carácter de las comillas dobles asignadas a un identificador, más adelante en el programa, preceda la definición con la palabra reservada, const, de la siguiente manera:

constante carbonizarseident[] = 'Te quiero';

Operaciones con literales de cadena

Operaciones de igualdad

Los operadores de igualdad son == y! =. Cuando se comparan variables (identificadores) de dos cadenas, son los punteros (direcciones) de los literales los que acaban comparándose; eso está mal. Para comparar cadenas, los literales deben compararse, como en el siguiente código:

resultado bool= 'mujer' == 'mujer';
costo<<resultado<< ' orte';

La salida es 1 para verdadero. La comparación se realiza a la manera del diccionario, pero los números van primero en orden ascendente, antes de las letras mayúsculas, que van antes de las minúsculas. El resultado del siguiente código es 0, para falso.

resultado bool= 'mujer' != 'mujer';
costo<<resultado<< ' orte';

Operadores relacionales con cadenas literales

Los operadores relacionales no funcionan con cadenas literales.

Literal de cadena sin procesar

Un literal de cadena sin formato, permite que una cadena se muestre como escrita, ignorando las secuencias de escape y respetando las nuevas líneas. Considere el siguiente código:

carbonizarsepag[] =R'(abc\d efg él
klmn orte'
'opq
rst) ';
costo<< str << '
orte';

La salida es:

abc \ d efg él
klmn n'' opq
primero

En el código, el literal de cadena sin formato comienza con R, seguido de y (. Termina con) y.

Tipos de literales de cadena principal de C ++

carbonizarse

El tipo char es el tipo C ++ original y normalmente almacenaría un carácter en 8 bits.

char16_t

Esto almacena un carácter en 16 bits.

char32_t

Esto almacena un carácter en 32 bits.

wchar_t

char16_t y char32_t son caracteres anchos. wchar_t es un carácter amplio que es propietario y está definido por la implementación.

Conclusión

Un carácter literal es un solo carácter entre comillas simples. Una secuencia de escape es un carácter que también puede estar entre comillas simples. Un literal de cadena es una secuencia de caracteres entre comillas dobles. Un literal de cadena es una matriz de caracteres que terminan en 0. Los operadores de igualdad y relacionales funcionan con caracteres literales. Los operadores de igualdad funcionan con literales de cadena, pero los operadores relacionales no funcionan con literales de cadena. Los identificadores de caracteres se pueden usar en las comparaciones, pero los identificadores de cadena no deben usarse en las comparaciones. Un literal de cadena sin formato permite que una cadena se muestre como escrita, ignorando las secuencias de escape y respetando las nuevas líneas.

Chrys