El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres...

Post on 06-Feb-2015

4 views 1 download

Transcript of El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres...

El tipo de datos “cadena” no existe en C/C++.Lo que utilizamos para manipular cadenas de

caracteres es un vector de tipo char.char nombre[16];

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Aquí estamos definiendo una cadena de

caracteres de tamaño 16, lo que nos va a permitir guardar el nombre de una persona usando hasta 15caracteres ya que el último caracter se reserva para guardar el <enter> que hace el usuario al terminar de ingresar el nombre.

Este <enter> se guarda automáticamente con el símbolo \0

Se puede incializar una cadena de caracteres de 2 maneras:

char cadena[10]={‘M’, ‘a’, ‘r’, ‘i’, ‘a’};

O también:char cadena[10]=“Maria”;

Y también se puede así:char cadena[]=“Maria”;

En este caso la cadena toma la longitud 5 + 1 para el enter.

La diferencia entre un vector de caracteres y una

cadena de caracteres es que la cadena de caracteres

termina con el carácter ‘\0’ y el vector de caracteres no.

Las cadenas de caracteres se pueden leer con un cin>>

pero si hay espacios en blanco, la cadena se corta.

Por ejemplo, si ingreso la cadena “Hola qué tal” y la leo

con un cin>>, me lee únicamente la palabra “Hola”

Por eso para leer cadenas de caracteres, usamos gets()

gets() y puts() pertenecen a la biblioteca stdio.h

Ejemplochar cadena[20]; gets(cadena);

Para mostrar la cadena puedo utilizar puts() o cout<<

Si utilizo puts() me muestra la cadena y a continuación hace un <enter<

Si utilizo cout<< me muestra la cadena y puedo seguir escribiendo en la misma línea.

Por ejemplo:char nombre[20], apellido [20]; cout<<“Ingrese el nombre”; gets(nombre); cout<<“Ingrese el apellido”;gets(apellido);

puts(nombre);puts(apellido):cout<<nombre;cout<<apellido

Con los datos Maximiliano Súarez, la salida será:

Maximiliano SuárezMaximilianoSuárez

Matrices de cadenas de caracteres0123456789

Para guardar, por ejemplo los nombres de 10 alumnos, en lugar de definir 10 vectores de caracteres, lo que hacemos es definir una matriz de 10 filas por 16 columnas.

Las filas indican la cantidad de nombres que vamos a guardar y las columnas indican la cantidad máxima de caracteres que va a tener cada nombre.

Ej. char nombres [10][15];

10 nombres15 caracteres cada nombre

Para poder guardar un nombre en la matriz, tenemos que indicarle en qué fila vamos a guardarlo:

gets(nombres[0]); gets(nombres[1]); gets(nombres[2]); gets(nombres[3]); gets(nombres[4]); gets(nombres[5]); gets(nombres[6]); gets(nombres[7]); gets(nombres[8]); gets(nombres[9]);

Si vamos a cargar todos los nombres, usamos un for:

for(j=0;j<10;j++) { cout<<“Ingrese un nombre”; gets(nombres[ j ]); }Para mostrar todos los nombres, uso el mismo

for:

for(j=0;j<10;j++) { puts(nombres[ j ]); }

Si voy a leer nombre y apellido:

char nombre[15], apellido[15];int j;for(j=0; j<10; j++){ cout<<“Ingrese nombre”; gets(nombre[j]); cout<<“Ingrese apellido”; gets(apellido[j]);}

Para mostrar nombre y apellido en la misma línea:

for(j=0; j<10; j++){ cout<<nombre[j]<<“\t”<<apellido[j] <<“\

n”;}La salida será, por ejemplo:Juan PérezMaría CeballosJulio Peralta

Funciones para manipular cadenasAlgunas funciones de la biblioteca string.hstrlen(cadena) permite calcular la longitud de

la cadena (sin incluir el enter)strcpy(cad1, cad2) permite copiar una cadena

en otra.strcmp(cad1, cad2) permite comparar 2

cadenas, el resultado será:0 si las cadenas son iguales<0 si la cadena 1 es menor que la cadena 2>0 si la cadena 1 es mayor que la cadena 2

stricmp(cad1,cad2) igual que strcmp pero no tiene en cuenta mayúsculas y minúsculas.

Ejemploschar cadena1=“Hola mundo”,

cadena2=“Juancito”;int largo;Ejemplo de strlen()largo=strlen(cadena1); cout<<largo; //aquí muestra el valor 10Ejemplo de stricmp()if(stricmp(cadena1,cadena2)==0) cout<<“Las cadenas son iguales”;else cout<<“Las cadenas son distintas”;//aquí la salida será “Las cadenas son distintas”

Ejemplo de strcpy

strcpy(cadena1,cadena2);cout<<cadena1<<“\t”<<cadena2; //La salida será: “Juancito Juancito”

Otra función es strrev(cadena) que permite invertir una cadena, por ejemplo;

strrev(cad1);cout<<cad1; //La salida será: “oticnauJ”