Cómo usar C ++ String Literal

Cómo usar C ++ String Literal
El teclado de la computadora tiene personajes impresos en ellos. Cuando presionas una tecla, ve el personaje en la pantalla. Nota: el espacio también es un personaje. Una cadena literal es una secuencia de caracteres. Este artículo explica cómo usar literales de cadenas C ++. Debe saber sobre las matrices y consejos de C ++ para comprender este artículo.

Personaje literal

Un personaje literal es un personaje en citas individuales. Entonces,

char ident1 = 'a'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';

son todas las diferentes definiciones de caracteres. Tenga en cuenta que un dígito en citas individuales es un personaje y no un entero.

Una secuencia de escape como \ ”(ver más abajo) en citas individuales, es un personaje. Entonces,

char ident1 = '"';

es un personaje.

Un solo símbolo en quotas dobles no es un personaje; Es una cadena de un personaje. Entonces "A" o "C" o "2" no es un personaje, sino que es una cadena de un personaje cada uno.

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

char ident = 'x';
ident = 'y';

Para evitar que un personaje asignado a un identificador se cambie, más tarde en el programa, precede a la definición con la palabra reservada, const, como sigue:

const char ident = 'd';

La variable, se dice que Ident es de solo lectura.

Cuerda literal

Una cadena literal es una secuencia de caracteres en citas dobles. Entonces,

char ident1 [] = "Te amo"; char ident2 [] = "Odio 3 de ti"; Char Ident3 []
= "Somos el mundo"; char ident4 [] = "Hola mundo!";

son todas las definiciones diferentes de literales de cadena. Tenga en cuenta el uso de quotas dobles. No hay nada como una variable ordinaria para una cadena. Una cadena literal es una variedad de caracteres, donde en lugar de delimitar con , la secuencia se delime con "". Los chars no están separados por comas. Cualquier número mayor que el número de caracteres en la cadena literal se puede colocar en los soportes cuadrados. Sin embargo, es mejor dejar vacíos los soportes cuadrados.

Un solo personaje en quotas dobles no es un personaje; Es una cadena de un personaje. Entonces "A" o "C" o "2" no es un personaje, sino una cadena de un personaje cada uno.

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

Cita simple y doble en personaje o literal

Tener una sola cita como personaje, haz algo como,

char ident = '\' ';

Tener una cita doble como personaje en una cadena literal, hacer algo como,

Char ident [] = "ab" cd ";

La barra insegura se usa en una secuencia de escape, para evitar conflictos con los delimitadores. Para tener una cita doble como personaje, no hay necesidad de la barra insegura: "" Está bien. Para tener una sola cotización en una cadena literal, no hay necesidad de la barra insegura: "ab'cd" está bien.

Dado que la barra insegura se usa para escapar de un personaje, debe ser escapado con otra barra insegura cuando se usa como personaje o en una cadena literal.

Secuencia de escape

Una secuencia de escape es una de:

\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ V

Cada secuencia de escape se escribe normalmente como un carácter dentro de citas individuales o como una secuencia de escape dentro de las quotas dobles.

  • \ ': se usa como un solo carácter de cotización, dentro de citas individuales.
  • \ ": Se usa como un personaje de doble cita, dentro de un literal.
  • \? : desde ? es un personaje reservado, debe escaparse en un literal.
  • \\: La barra invertida debe escaparse como un carácter o en una cadena literal, para no dar lugar a algún otro significado.
  • \ A: suena una alarma una vez, cuando se usa como carácter o dentro de una cadena literal.
  • \ B: Resultados como un espacio de retroceso en la pantalla dentro de una cadena literal, quitando el personaje anterior.
  • \ f: hace que la página siguiente se alimente a la impresora cuando se usa como carácter o dentro de un literal.
  • \ R: Devuelve el cursor, donde se imprimirá el próximo personaje, pero dentro de la línea actual.
  • \ n: Devuelve el cursor al comienzo de la siguiente línea o simplemente a la siguiente línea, dependiendo del sistema operativo.
  • \ t: crea una pestaña horizontal.
  • \ V: Crea una pestaña vertical.

Operaciones con personajes

Concatenación

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

Char ident [] = "ABC" "def";
cout << ident << "\n";

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 tarea. La definición incluso puede continuar con la siguiente línea con espacio que separa las líneas de la siguiente manera:

Char ident [] = "ABC" "def"
"Ghi";
cout << ident << "\n";

La salida es, abcdefghi.

Nota: los caracteres no pueden concatenarse de esta manera, ya que las citas individuales para el personaje 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 de bool = 'b' == 'b';
cout << result << "\n";

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

Resultado de bool = 'b' == 'b';
cout << result << "\n";

La salida es 0 para falso. Considerar,

Resultado de bool = 'b' == 'c';
cout << result << "\n";

La salida es 0 para falso. Considerar,

Resultado de bool = 'b' != 'B';
cout << result << "\n";

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

Resultado de bool = 'b' != 'B';
cout << result << "\n";

La salida es 1 para verdadero. Considerar,

Resultado de bool = 'b' != 'c';
cout << result << "\n";

La salida es 1 para verdadero.

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

Operadores relacionales

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

Entonces < will return true (1) when the left character is less than the right character. The other relational operators, , >= se explican de manera similar.

La cadena literal como un objeto

La matriz es un puntero constante al comienzo de una secuencia de tipo de datos particular. Del mismo modo, la cadena es un puntero constante al comienzo de una secuencia de caracteres. Compare las siguientes definiciones:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "mujer";

La primera matriz es una variedad de INTS 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 las mismas, pero por sus nombres. El contenido de texto de la segunda matriz está delimitado por aparatos ortopédicos; Los personajes están separados por comas y cada personaje está en citas individuales. El contenido de texto de la tercera matriz está delimitado por citas dobles; Los personajes no están separados por comas y cada personaje no está en citas individuales. La segunda y tercera matrices son dos formas de producir una cuerda, con la tercera forma de ser la mejor manera.

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 entero, 3 incluso si se cambia el valor de 3. El tamaño de la matriz, cinco elementos, realmente 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 que la ubicación tenga el carácter, 'W' incluso si se cambia el valor de 'W'. El tamaño de la matriz de personajes, cinco elementos, realmente 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 el valor de W se cambia. El tamaño de la cadena literal (matriz), cinco elementos, no permanece realmente constante. Sin embargo, cada uno de los valores del literal puede modificarse.

¿Qué es constante en una matriz o cadena literal?? 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 realmente no permanece constante. Cada valor en 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:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "mujer";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

La salida es:

9
Mujeres mujeres
mujer

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

Subíndico de definición

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

Para la cadena literal, el entero debe ser al menos 1 más alto que el número de caracteres en la cadena. Esto se debe a que el carácter nulo (\ 0) siempre es agregado por el compilador, al final de una matriz que es una cadena, delimitada por quotas 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.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "mujer";

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

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "mujer";

La salida debería ser ahora,

9
mujer
mujer

Sin la segunda "Mujeres". Tenga en cuenta que el subíndice correspondiente para la segunda matriz es 6, y no 5 como era.

Valores literal constantes

Para evitar que cualquier carácter en las cotizaciones dobles asignadas a un identificador se modifique, más tarde en el programa, precede a la definición con la palabra reservada, const, como sigue:

const char ident [] = "Te amo";

Operaciones con literales de cadena

Operaciones de igualdad

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

bool dulte = "mujer" == "mujer";
cout << result << '\n';

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

Resultado de bool = "Mujer" != "mujer";
cout << result << '\n';

Operadores relacionales con literales de cadena

Los operadores relacionales no funcionan con literales de cadena.

Cuerda cruda literal

Una cadena en bruto literal, permite que se muestre una cadena como se escribe, ignorando las secuencias de escape y respetando nuevas líneas. Considere el siguiente código:

char str [] = r "(abc \\ d efg hij
klmn \ n "'opq
rst) ";
cout << str << '\n';

La salida es:

abc \\ d efg hij
klmn \ n "'opq
primero

En el código, el literal de cadenas sin procesar comienza con R, seguido de "y (( . Termina con) y ".

C ++ Tipos literarios de cadena principal

carbonizarse

El tipo de char es el tipo C ++ original y normalmente almacenaría un personaje en 8 bits.

char16_t

Esto almacena un personaje en 16 bits.

char32_t

Esto almacena un personaje en 32 bits.

wchar_t

char16_t y char32_t son caracteres amplios. WCHAR_T es un personaje amplio que es patentado y definido por la implementación.

Conclusión

Un personaje literal es un personaje único en citas individuales. Una secuencia de escape es un personaje que también puede estar en citas individuales. Una cadena literal es una secuencia de caracteres en quotas dobles. Una cadena literal es una variedad de caracteres que terminan con \ 0. Los operadores de igualdad y relacionales trabajan con literales de caracteres. 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 comparaciones, pero los identificadores de cadenas no deben usarse en comparaciones. Una cadena en bruto literal permite que se muestre una cadena como se escribe, ignorando las secuencias de escape y respetando nuevas líneas.