12 - Cadena de caracteres mediante vectores


Un string es una serie de caracteres seguidos almacenados en la memoria RAM. Veremos la forma de administrar string en C++ heredados del lenguaje C (esta forma de administrar string es ampliamente utilizada)

Una cadena o string de caracteres es un vector con componentes de tipo char.
Se define de la siguiente manera:

char <Nombre> [<Cantidad de caracteres>];

Ejemplo:

char cadena[8];

La variable cadena puede almacenar hasta 7 caracteres (lo definimos de 8 ya que requiere un caracter para indicar el fin)

No existe operador de asignación para cadenas.

Podemos definir y almacenar inmediatamente la cadena:

char cadena [8]="hola";

Al definir la cantidad de componentes que tendrá el vector, debemos tener en cuenta que necesitamos un elemento para guardar el terminador de cadena. El terminador de cadena (?\0?) marca el fin del vector de caracteres.

El contenido de cada componente del vector es el siguiente:

componente	[0]   [1]   [2]   [3]   [4]   [5]   [6]   [7]
Cadena		'h'   'o'   'l'	  'a'   '\0'

Problema 1:

Confeccionar un programa que defina dos vectores de caracteres con los nombres de meses de "enero" y "febrero". Mostrar luego por pantalla los dos vectores

Programa:

#include<iostream>

using namespace std;

void main()
{
    char mes1[20]="enero";
    char mes2[20]="febrero";
    cout <<mes1;
    cout <<"\n";
    cout <<mes2;
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace : CadenaInicializar

Hemos definido los dos vectores de 20 caracteres, si queremos hacer un uso óptimo de la memoria podríamos definir los vectores con los siguientes tamaños:

    char mes1[6]="enero";
    char mes2[8]="febrero";

Como la cadena "enero" requiere 5 caracteres luego el tamaño mínimo del vector debe ser 6.

Para ingresar cadenas de caracteres por teclado debemos emplear el método getline del objeto cin (le pasamos como parámetro la cadena a ingresar y el tamaño de la cadena):

cin.getline(cadena,40);

Problema 2:

Confeccionar un programa que defina una cadena de caracteres para almacenar el nombre y apellido de una persona. La carga del dato hacerla por teclado.

Programa:


#include <iostream>

using namespace std;

void main()
{
    char nombre[40];
    cout <<"Ingrese su nombre:";
    cin.getline(nombre,40);
    cout <<"El nombre ingresado es:";
    cout <<nombre;
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace : CadenaCargaTeclado

Para comparar dos cadenas si son iguales no podemos utilizar el operador == como se utiliza en los tipos de datos enteros vistos anteriormente. Para comparar cadenas debemos emplear la función strcmp:

int strcmp(cadena1,cadena2)

Retorna 0 si las dos cadenas son exactamente iguales, mayor a cero si cadena1 es mayor alfabéticamente que cadena2 y menor a cero en caso contrario.

Problema 3:

Confeccionar un programa que permita ingresar dos cadenas de caracteres por teclado y luego mostrar un mensaje indicando si: "son iguales", "la primer cadena ingresada es mayor alfabéticamente" o "la segunda cadena ingresada es mayor alfabéticamente".

Programa:

#include<iostream>

using namespace std;

void main()
{
    char cadena1[50];
    char cadena2[50];
    cout <<"Ingrese la primer cadena:";
    cin.getline(cadena1,50);
    cout <<"Ingrese la segunda cadena:";
    cin.getline(cadena2,50);
    if (strcmp(cadena1,cadena2)==0)
    {
        cout <<"son iguales";
    }
    else
    {
        if (strcmp(cadena1,cadena2)>0)
        {
            cout <<"la primer cadena ingresada es mayor alfabeticamente";
        }
        else
        {
            cout <<"la segunda cadena ingresada es mayor alfabéticamente";
        }
    }
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace : CadenaComparacion

Retornar