Diferencia entre matriz de caracteres y cadena

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 6 Mayo 2024
Anonim
40. Programación en C++ || Cadenas || Introducción a las cadenas de caracteres
Video: 40. Programación en C++ || Cadenas || Introducción a las cadenas de caracteres

Contenido


C ++ admite ambos, Conjunto de caracteres y cadena, ya que C ++ tiene considerables beneficios en el uso de ambos. Pero, la incapacidad para operar en la matriz de caracteres aumenta el desarrollo de la cadena de clase. Tanto una matriz de caracteres como una cadena contienen la secuencia de caracteres. Pero la diferencia fundamental entre la matriz de caracteres y la cadena es que la "matriz de caracteres" no se puede operar con operadores estándar, mientras que los objetos de "cadena" se pueden operar con operadores estándar. Estudiemos las otras diferencias entre una matriz de caracteres y una cadena.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónMatriz de personajesCuerda
BASICLa matriz de caracteres es una colección de variables, de tipo de datos de caracteres.La cadena es una clase y las variables de la cadena son el objeto de la clase "cadena".
Sintaxischar array_name;string string_name;
IndexaciónSe puede acceder a un carácter individual en una matriz de caracteres por su índice en la matriz.En cadena, se puede acceder al carácter particular mediante la función "string_name.charAt (index)".
Tipo de datosUna matriz de caracteres no define un tipo de datos.Una cadena define un tipo de datos en C ++.
OperadoresLos operadores en C ++ no se pueden aplicar en la matriz de caracteres.Puede aplicar el operador estándar de C ++ en la cadena.
LímiteLos límites de la matriz se desbordan fácilmente.Los límites no se desbordarán.
AccesoAcceso rápidoAcceso lento


Definición de matriz de caracteres


Una matriz de caracteres es una colección de las variables del tipo de datos "char"; puede ser una matriz unidimensional o una matriz bidimensional. También se llama "cadena terminada en nulo". Una matriz de caracteres es una secuencia de los caracteres que se almacenan en direcciones de memoria consecutivas. En una matriz de caracteres, se puede acceder a un carácter particular por su índice. Un "carácter nulo" termina la matriz de caracteres ".

Tomemos un ejemplo de matriz de caracteres:

char name = {A, j, a, y, 0}; o char name = "Ajay";

Aquí, "char" es un tipo de datos de caracteres, "nombre" es un nombre variable de la matriz de caracteres. Había mostrado dos formas de inicializar la matriz de caracteres. En el primer método, el nulo se menciona explícitamente y en el segundo método, el compilador inserta automáticamente el nulo.


El final de la cadena siempre es un carácter nulo; Es el carácter final de la matriz de caracteres. Una matriz de caracteres no es un tipo de datos incorporado; creamos una matriz de caracteres declarándolo. No puede aplicar operadores estándar en una matriz de caracteres. Para operar en una matriz de caracteres hay algunas funciones integradas como, (strlen (), strlwr (), strupr (), strcat ()). Como los operadores estándar no se pueden aplicar a una matriz de caracteres, no pueden participar en ninguna expresión.

También se puede crear el puntero de caracteres a una matriz de caracteres.

Vamos a entenderlo con un ejemplo.

char s1 = "Hola"; char s2 = "Señor"; s1 = s1 + s2; // no se pueden aplicar operadores de error s2 = s1; // error Puntero de caracteres char * s = "Morning"; char * p; p = s; // se ejecuta

En el ejemplo anterior, habíamos declarado dos matrices de caracteres s1, s2 y dos punteros de caracteres sy p. Los conjuntos de caracteres s1 y s2 se inicializan, podemos ver que ni el operador de suma (+) ni el operador de asignación trabajan en el conjunto de caracteres. Pero un puntero de caracteres puede asignarse a otro puntero de caracteres.

Recuerde que una vez que se inicializa la matriz de caracteres, no se puede inicializar nuevamente a otro conjunto de caracteres. El acceso a una matriz de caracteres o una cadena terminada en nulo es rápido en comparación con la cadena en C ++.

Definición de cadena

Una cadena no es un tipo de datos incorporado de C ++. Es un objeto de clase de tipo "cadena". Como en C ++, crear una clase es como crear un "tipo". La clase "cadena" es parte de la biblioteca C ++. Contiene el conjunto de caracteres o conjunto de caracteres en su conjunto. Hay tres razones detrás del desarrollo de una clase de cadena estándar.

  • primero es "coherencia", las matrices de caracteres no son tipos de datos por derecho propio.
  • Segundo es "conveniencia", no puede usar operadores estándar en una matriz de caracteres.
  • Tercero es "seguridad", los límites de la matriz se desbordan fácilmente.

Comprendamos las cadenas con un ejemplo.

cadena s1; s1 = "Hola"; cadena s2 ("Buenos días"); cadena s3 = "Hennery"; cadena s4;

En la declaración anterior, se declaran cuatro variables de cadena u objetos (s1, s2, s3, s4). En la declaración anterior, había mostrado tres formas de inicializar la cadena. La cadena s1 se declara y luego se inicializa por separado. La cadena s2 es inicializada por el constructor de la clase "Cadena". La cadena s3 se inicializa en el momento de su declaración como lo hace el tipo de datos normal. Podemos aplicar el operador estándar a las variables de cadena.

s4 = s1; // asignar un objeto de cadena a otro s4 = s1 + s2; // agregando dos cadenas y almacenando el resultado en la tercera cadena if (s3> s2) // comparando dos cadenas cadenas s5 (s1); crear un nuevo objeto de cadena usando un objeto de cadena existente

En el código anterior, se aplican varios operadores en una cadena y se realizan varias operaciones. La primera instrucción copia un objeto de cadena a otro objeto de cadena. En la segunda declaración, dos cadenas se concatenan y se almacenan en una tercera cadena. En la tercera declaración, se comparan dos cadenas. En la cuarta declaración, se crea un nuevo objeto de cadena utilizando el objeto de cadena ya existente.

El acceso a la cadena es lento en comparación con una matriz de caracteres o una cadena terminada en nulo.

Diferencias clave entre matriz de caracteres y cadena

  1. Una matriz de caracteres es una colección de variables que son de tipo de datos de caracteres. Cadena es una clase que se instancia para declarar cadenas.
  2. Usando el valor de índice puede acceder a un personaje desde una matriz de caracteres. Por otro lado, si desea acceder a un carácter en particular en una cadena, puede acceder a él mediante la función string’s_name.charAt (index).
  3. Como una matriz no es un tipo de datos de manera similar, un carácter tampoco es un tipo de datos. Por otro lado, String es una clase que actúa como un tipo de referencia, por lo tanto, se puede decir que String es un tipo de datos.
  4. No puede aplicar ningún operador en una matriz de caracteres, mientras que puede aplicar operadores en String.
  5. Al ser una matriz, la matriz de caracteres tiene una longitud fija y sus límites se pueden superar fácilmente. Donde String no tiene límites.
  6. Los elementos de la matriz se almacenan en una ubicación de memoria contigua, por lo tanto, se puede acceder más rápido que la variable de cadena.

Conclusión:

La incapacidad para operar en una matriz de caracteres aumentó el desarrollo de la clase de cadena estándar.