Cadenas de Caracteres en C++

Cadenas de Caracteres.
Información sobre la plantilla
CadenaCaractyeresC++.jpg
Concepto:Una cadena en C++ es un conjunto de caracteres, o valores de tipo "char", terminados con el carácter nulo. Internamente se almacenan en posiciones consecutivas de memoria.

Cadena de caracteres.Una cadena en C++ es un conjunto de caracteres, o valores de tipo "char", terminados con el carácter nulo. Internamente se almacenan en posiciones consecutivas de memoria en forma de arreglo.

Estructura

Este tipo de estructuras recibe un tratamiento especial, y es de gran utilidad y de uso continuo. La manera de definir una cadena es la siguiente: char <identificador> [<longitud máxima>]; Cuando se declara una cadena hay que tener en cuenta que tendremos que reservar una posición para almacenar el carácter nulo, de modo que si queremos almacenar la cadena "HOLA", tendremos que declarar la cadena como: char Saludo[5]; Cuatro caracteres para "HOLA" y uno extra para el carácter '\000'. También nos será posible hacer referencia a cada uno de los caracteres individuales que componen la cadena, simplemente indicando la posición. Por ejemplo el tercer carácter de nuestra cadena de ejemplo será la 'L', podemos hacer referencia a él como Saludo[2]. Los índices tomarán valores empezando en el cero, así el primer carácter de nuestra cadena sería Saludo[0], que es la 'H'. Una cadena puede almacenar informaciones como nombres de personas, mensajes de error, números de teléfono, etc. El tratamiento de las cadenas de caracteres resulta muy importante, debido a la gran cantidad de información que ellas almacenan y su valor semántico. Algunas de las operaciones más importantes con cadenas, son:

  • Copia de una cadena
  • Cálculo de la longitud,
  • Comparación,
  • Concatenación,
  • Extracción de subcadenas,
  • Búsqueda de información dentro de las cadenas,
  • Conversiones

Que se muestran a continuación, según las contenidas en la biblioteca llamada string (string.h). Copia de cadenas Esta operación brinda la posibilidad de copiar el valor de una cadena para una variable de cadena dada. Con stpcpy(var_cadena, cadena2) se copia el valor de cadena2 para var_cadena. Ejemplo: El siguiente programa muestra la copia de la cadena frase1 a la cadena frase2.

Uso de strcpy

#include <iostream.h>
#include <string.h>
void main()
{ 
   char frase1[] = "Copiando cadena";
   char frase2[80];
   strcpy(frase2,frase1);
   cout << "Cadena # 1: " << frase1 << endl;
   cout << "Cadena # 2: " << frase2 << endl;
}

Si la cadena fuente es de longitud mayor que la cadena destino, se cae en el gravísimo error de sobrescribir después del final de la cadena fuente. Una variante de esta función y que ayuda a eliminar el efecto colateral arriba expresado es utilizar la función strncpy, stpncpy(var_cadena, cadena2, cantidad) que posee un tercer parámetro (cantidad) para indicar cuántos caracteres serán transferidos. Una vez transferidos los caracteres, debe escribirse en la cadena destino el carácter null.

Uso de strcnpy

#include <iostream.h>
#include <string.h>
void main(void)
{ 
   char destino[10];
   char origen[] = "abcdefghi";
   strncpy(destino, origen, 3);
   destino[3] = '\0'; //Si esto no se hace, la salida es imprevisible
   cout << destino<< '\n'; }

La salida sería:

abc
Es bueno destacar que si una cadena se define con un constructor corriente de arreglo, como en:

  
char cadena[6];

no resultaría posible hacer:

cadena = "casa";   // ERROR

pues, como sabemos, no es posible aplicar el operador de asignación para arreglos completos. Entonces usaríamos: strcpy(cadena, "casa"); lo cual es mejor que la solución de copiar de una cadena para otra carácter a carácter:

for(i = 0; i < strlen(cadena2); i++)
var_cadena[i] = cadena2[i];
var_cadena[i] = '\0'; // carácter nulo de terminación
}

Fuentes

Referencias

Bibliografía

  • Addison Wesley - C++ Network Programming Volume I - Mastering Complexity with ACE and Patterns
  • Como programar en C y C++ Tomo I
  • C con Clase

Enlaces externos