C ++

Cómo utilizar C ++ String Literal

Cómo utilizar C ++ String Literal
El teclado de la computadora tiene caracteres impresos en ellos. 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 usar 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,

char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '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,

char ident1 = '"';

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:

char ident = '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:

const char ident = 'd';

Se dice que la variable, ident es de solo lectura.

Cadena literal

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

char ident1 [] = "Te amo"; char ident2 [] = "Odio a 3 de ustedes"; char ident3 []
= "somos el mundo"; char ident4 [] = "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,

char ident = '\' ';

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

char ident [] = "ab" 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 hay necesidad de 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 un literal de cadena.

Secuencia de escape

Una secuencia de escape es una de las siguientes:

\ '"\? \\ \ a \ b \ f \ n \ 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.

Operaciones con personajes

Concatenación

En la definición, dos literales de cadena se pueden unir 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 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:

char ident [] = "abc" "def"
"ghi";
cout << ident << "\n";

La salida es abcdefghi.

Nota: Los caracteres no se pueden concatenar de esta manera, ya que las comillas simples para el 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';
cout << result << "\n";

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

resultado bool = 'B' == 'b';
cout << result << "\n";

La salida es 0 para falso. Considerar,

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

La salida es 0 para falso. Considerar,

resultado bool = 'B' != 'B';
cout << result << "\n";

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

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

La salida es 1 para verdadero. Considerar,

resultado 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 van antes de las letras mayúsculas, que van antes de las 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 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:

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

La primera matriz es una matriz de entradas y tiene cinco elementos. La segunda y tercera matriz 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 la mejor forma.

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, 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:

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
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 puede 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 en 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.

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

Para que la segunda definición sea 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
mujeres
mujeres

sin la segunda "mujer". 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:

const char ident [] = "Te amo";

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:

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

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

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

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 líneas nuevas. 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 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 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 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

Cómo usar GameConqueror Cheat Engine en Linux
El artículo cubre una guía sobre el uso del motor de trucos GameConqueror en Linux. Muchos usuarios que juegan juegos en Windows a menudo usan la apli...
Los mejores emuladores de consola de juegos para Linux
Este artículo enumerará el software de emulación de consola de juegos más popular disponible para Linux. La emulación es una capa de compatibilidad de...
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...