Usar matrices de caracteres para almacenar y procesar cadenas

cadena

Una cadena es una secuencia de caracteres entre comillas dobles. Por ejemplo, "China". Las constantes de cadena agregan '\0' como marca de fin al final de la secuencia de caracteres. La cadena se almacena en la memoria en el orden en que están organizados los caracteres de la cadena y se agrega '\0' al final como marca de fin.

Para el código ASCII, cada carácter ocupa un byte, mientras que para el código Unicode, cada carácter ocupa dos bytes. Este tutorial solo habla sobre cadenas y caracteres codificados en ASCII.

C ++ es lo mismo que C. No hay variables de cadena en las variables de tipos de datos básicos, entonces, ¿cómo lidiar con el almacenamiento y operación de cadenas?

En lenguaje C, las matrices de caracteres se utilizan para almacenar cadenas y las operaciones son similares a las matrices normales. El lenguaje C++ hereda este enfoque. Además, la clase de cadena también se define en la biblioteca estándar de C++.

Declaración y uso de matrices de caracteres.

La declaración y el uso de matrices de caracteres son los mismos que los de otros tipos de matrices. La sintaxis para declarar una matriz de caracteres es:

char 字符数组名[下标表达式1][下标表达式2]...;

Déjame darte un ejemplo sencillo sobre la declaración y el uso de matrices de caracteres:

#include <iostream>
using namespace std;
int main()
{
    
    
    char str[10] = {
    
    'I', ' ','l','o','v','e',' ','y','o','u' };        // 声明和初始化一维字符数组str
    int i;
    for (i=0; i<10; i++)
    {
    
    
        cout << str[i];
    }
    cout << endl;
    return 0;
}

Insertar descripción de la imagen aquí

Las cadenas se almacenan y procesan mediante matrices de caracteres.

En el ejemplo anterior, se define una matriz de caracteres y los elementos de la matriz se procesan uno por uno, pero lo que se almacena no es una cadena porque no hay una marca final '\0' al final. Si agregamos '\0' al final al inicializar la asignación a la matriz de caracteres, forma una cadena, pero la cantidad de elementos en la matriz utilizada para almacenar la cadena debe ser mayor o igual a la longitud de la cadena más 1.

Al inicializar una matriz de caracteres, el valor inicial puede ser una constante de caracteres separados por comas o un código ASCII, o una constante de cadena. Para las constantes de cadena, no es necesario agregar explícitamente '\0' al final, '\0' se incluye implícitamente.

Basado en los métodos anteriores para inicializar y asignar valores a matrices de caracteres, aquí hay algunos ejemplos:

char str[5] = {
    
    108,111,118,101,0};
// 以逗号分隔的ASCII码为字符数组初始化赋值
char str[5] = {
    
    'l','o','v','e','\0'}; 
// 以逗号分隔的字符常量为字符数组初始化赋值
char str[5] = "love"; 
// 以字符串常量为字符数组初始化赋值

Cuando una cadena se almacena en una matriz de caracteres, podemos procesarla y generarla carácter por carácter como en la rutina anterior, o podemos ingresar o generar la cadena completa a la vez.

Por ejemplo:
entrada única: char str[5]; cin >> str;
salida única:char str[5]="love"; cout << str;

Al ingresar o generar una cadena a la vez, debemos prestar atención a:
1. Para la marca de final de cadena '\0', la cadena de salida no se generará.
2. Al ingresar varias cadenas, deben estar separadas por espacios, si desea ingresar una sola cadena, no debe haber espacios, de lo contrario se considerarán varias cadenas.
3. Al generar una cadena, el parámetro de salida es el nombre de la matriz de caracteres y la salida finaliza cuando se encuentra '\0'.

Dé ejemplos para ilustrar los tres puntos anteriores:
1. char str[5]="love"; cout << str;. El final de la cadena "amor" implica '\0'. Al generar, solo se generará "amor" y no se generará '\0'.
2. char str1[5],str2[5],str3[5]; cin >> str1 >> str2 >> str3;Cuando se ejecuta el programa y se ingresa "Te amo", a las cadenas str1, str2 y str3 se les asignarán los valores "yo", "amor" y "tú" respectivamente. Si en cambio char str[11]; cin >> str;se ingresa "Te amo" cuando se ejecuta el programa, a str se le asigna el valor "I". Debido a que se ingresa un espacio después de 'I', se considera que son varias cadenas y a str se le asigna solo la subcadena antes del espacio.
3. Al generar una cadena, el parámetro cout solo necesita escribir el nombre de la matriz de caracteres. Por ejemplo, cout << str puede generar una cadena str y la salida finaliza cuando se encuentra '\ 0'.

Podemos usar las funciones de procesamiento de cadenas en la biblioteca para procesar cadenas. Por ejemplo, strcat se usa para conectar dos cadenas, strcpy se usa para copiar cadenas, strcmp se usa para comparar cadenas y strlen se usa para calcular la longitud de las cadenas. . Debe incluir el archivo de encabezado string.h antes de usar estas funciones.

Supongo que te gusta

Origin blog.csdn.net/qq_36314864/article/details/117882266
Recomendado
Clasificación