Está en la página 1de 10

INTRODUCCIN AL TIPO COMPUESTO CADENA CONTENIDOS

1. Introduccin a las cadenas 2. Definicin 3. Declaracin de cadenas 4. Inicializacin de cadenas 5. Escritura y Lectura de datos tipo cadena 6. Funciones de manipulacin de cadenas 7. Arrays de cadenas
1

INTRODUCCIN AL TIPO COMPUESTO CADENA Introduccin:


Vamos a ver por fin cmo manejar TEXTO en C++, ya que hasta el momento solo lo hemos mostrado por pantalla mediante la sentencia cout y el operador de insercin <<.
void main() { cout << Esto es una cadena de texto; }

C++ no tiene como otros lenguajes de programacin, un tipo de datos bsico para almacenar texto, como puede ser el tipo string. C++ utilizar ARRAYS DE CARACTERES para almacenar texto.
2

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Definicin


Una cadena de texto es una secuencia de caracteres. Ejemplos de cadenas son: Don Quijote de la Mancha Hola Mundo Apolo 13 En C++ una cadena se considera como un array de caracteres terminado con el carcter nulo \0.
La cadena de texto Apolo 13 se almacena as A p o l o 1 3 \0

INTRODUCCIN AL TIPO COMPUESTO CADENA Diferencia entre Cadenas de Texto y arrays de caracteres
La principal diferencia entre una cadena y un array de caracteres, es que una cadena siempre termina con el carcter nulo \0 y los arrays de caracteres no. Como conclusin, podemos decir que - Todas las cadenas de texto son arrays de caracteres, - pero, no todos los arrays de caracteres almacenan cadenas.
A p o l o 1 3 \0 Cadena de de longitud 8. Array de caracteres de tamao 8.

A p o l o
4

1 3

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Declaracin


Las cadenas de texto se declaran como se declaraban los arrays de caracteres, indicando el tamao mximo de la cadena + 1.
char <nombre_de_cadena> [ tamao_mximo +1 ]; Sintaxis

Ejemplos:
char cabecera[10]; char nombre[8];

La variable cabecera puede contener una cadena de texto de tamao mximo 9 o un array de 10 posiciones.

Se declaran de la misma manera, por tanto la diferencia radica en el uso que se le de a la variable
5

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Declaracin


Para declarar una cadena capaz de almacenar el texto Apolo 13 haremos lo siguiente:
char titulo_pelicula[9];

Es vlido cualquiera de las 3

char titulo_pelicula[10];

char titulo_pelicula[20]; char titulo_pelicula[8];

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Inicializacin


Las cadenas de caracteres no se pueden inicializar fuera de la declaracin. Inicializacin de cadenas en la declaracin:
char cadena_texto[20] = Hola Mundo; char saludo[] = Hola ; ...

La cadena cadena_texto puede contener un mximo de 19 caracteres ms el carcter nulo \0

El compilador reserva espacio para la cadena saludo. Dado que el tamao de hola es 4 caracteres, el compilador reserva 5
Cadena_texto = H o l Saludo = H o l
7

M u n d o \0

a \0

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Inicializacin


Qu ocurra cuando inicializbamos solo algunas componentes de un array de caracteres como cadena de texto?
El compilador no inicializa el resto de elementos con el carcter nulo \0
Cadena_texto = H o l
a M u n d o \0

Si se trata de inicializar la cadena en el cuerpo del programa de la siguiente manera, nos dar un error de compilacin.
cadena_texto = Hola Mundo; ...

Erro r

!!

Ms adelante veremos que para realizar sta accin necesitamos recurrir a funciones de cadena (string.h).
8

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Ejemplos de Inicializacin


char cad_uno[20] = Hola Mundo; char cad_dos[20] = {H,o,l,a, ,M,u,n,d,o }; char nombre[4] = Luis; char cad_tres[20] = { Hola Mundo}; ... ... char saludo_uno[] = Hola ; L u i s char saludo_dos[] = { Hola} ; ... No podemos tratarlo como char saludo_tres[] = {H, o, l, a}; una cadena. S como un array ...

de caracteres.
cad_uno = cad_tres =
H o l a M u n d o \0
H o l a \0

saludo_uno = saludo_dos = saludo_tres = H o l


9

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Escritura de cadenas


Para escribir el contenido de una variable de tipo cadena en consola, utilizamos la sentencia de escritura cout con el operador de insercin <<.
char cad_uno[20] = Hola Mundo; char nombre[4] = Luis; cout << cad_uno; cout << nombre;

cout escribe todos los caracteres


desde la posicin 0 en adelante, hasta que se encuentre el carcter nulo \0

En consola aparece: Hola Mundo


a M u n d o \0

cad_uno = H o l
L

s 6 9 g r

t \0 v

En consola aparece: Luis69grt


10

nombre

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Lectura de cadenas


La sentencia de lectura cin con el operador de extraccin >> produce anomalas si se aplica a una variable de tipo cadena.
char nombre[20] ; cin >> nombre; ...

Esto es porque cin termina la operacin de lectura cuando se encuentra un espacio en blanco.

Si el usuario introduce la entrada Antonio de Nebrija, la variable nombre contiene la siguiente informacin:
A n t o n i o \0

Qu guarda aqu el compilador ?


11

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Lectura de cadenas


C++ dispone de funciones especficas que en unin con cin, permite la lectura correcta de cadenas.
cin.getline: cadena tamao carcter void Sirve para leer una lnea completa incluyendo espacios en blanco. - cadena: nombre de la variable donde queremos guardar la cadena. - tamao: n mximo de caracteres que se leern. El tamao deber como mucho la longitud que aparece en la declaracin de la cadena. - carcter: se leern caracteres hasta que se encuentre el carcter aqu especificado. Si no se pone, el compilador supone que es \n.
char nombre[4] ; cin.getline( nombre, 4 ); cin.getline( nombre, 4, a);
12

iostream.h

Si se introduce el texto casa


c a s \0
c

\0

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Lectura de cadenas


cin.get : char bool iostream.h

Sirve para leer carcter a carcter el flujo de entrada. La funcin cin.get(letra) lee un carcter y lo guarda en letra. Devuelve 0 si el carcter ledo es final de archivo. En otro caso devuelve 1.
char letra ; bool fin; fin = cin.get( letra ); if (fin == 0) cout << "fin de archivo"; ...

El carcter fin de archivo es: Control+Z (Windows/Dos) Control+D (Unix) iostream.h

cin.ignore() Sirve para leer uno o ms caracteres sin procesar del flujo de entrada.
13

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Lectura de cadenas


Otras funciones para la lectura de cadenas.
gets : cadena void Console I/O stdio.h

Sirve para leer una lnea desde el archivo de entrada. Lee hasta que encuentra un salto de lnea. Se llama a sta funcin con el nombre de la variable donde queremos guardar la cadena leda.

char nombre[20] ; gets( nombre ); ...

Si se introduce el texto Hola Mundo


H o l a M u n d o \0

nombre =

14

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Lectura de cadenas


getch : void int Console I/O conio.h

Sirve para leer un carcter del flujo de entrada sin que aparezca en pantalla. Se la llama sin argumentos y devuelve un entero.
char letra ; letra = getch(); if (letra == S) cout << Ha elegido seguir"; ...

getchar : void int Sirve para leer el siguiente carcter del flujo de entrada. Se la llama sin argumentos y devuelve un entero.
15

stdio.h

Ejemplo

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Lectura de cadenas


Ejemplo:
void main() { char letra ; bool seguir = true; while (seguir) { letra = getchar(); if (letra == '\n') { cout << "fin de lnea"; seguir = false; } else cout << letra; } getch(); } 16

Las funciones getch y getchar estn especializadas en la captura de un solo carcter. La diferencia es que getchar lee un carcter y lo imprime en pantalla. Sin embargo getch, lo lee pero no lo imprime en pantalla. Se utilizan para: - lectura de un solo carcter - retener pantallas.

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Manipulacin de cadenas


C++ dispone de la biblioteca de cadena string.h. Dicha biblioteca contiene funciones de manipulacin de cadenas. Veamos algunas de ellas:
strlen: cadena int Devuelve la longitud de la cadena dada como argumento.
char nombre[30], dato[30] ; int tamao; gets(nombre); ... tamao = strlen(nombre); strcpy(dato, nombre); ...

string.h

Si se introduce el texto Hola Mundo, la variable tamao toma el valor 10.

strcpy: cadena_destino cadena_origen void Copia la cadena_origen en la cadena_destino.


17

string.h

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Manipulacin de cadenas


strcmp: cadena1 cadena2 int string.h

Esta funcin compara sus dos argumentos que son de tipo cadena y devuelve un entero. strcmp(c1, c2) devuelve 0 si c1 = c2 strcmp(c1, c2) devuelve un nmero negativo si c1 < c2 strcmp(c1, c2) devuelve un nmero positivo si c1 > c2 string.h

strcat: cadena_destino cadena_origen void

Esta funcin concatena la cadena fuente a continuacin de la cadena destino.


char nombre[30] = Antonio, int b; . b = strcmp(nombre,apellido); strcat(nombre, apellido); ... 18 apellido[30]=Nebrija ;

// devuelve un nmero negativo

INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Arrays de cadenas


Para almacenar varios datos de tipo cadena en un array, podemos hacerlo de varias formas:

1. Usando la instruccin typedef


typedef char nombre[30]; . nombre lista [20] ; ...

Permite al programador definir un nuevo tipo de datos en funcin de tipos ya conocidos


"Ana" "Pepe" 0 1 "Juan" 19

lista =

vector =

Tipo de datos nombre

2. Usando un array de 2 dimensiones


. char lista [20][30] ; ...

1 2
..

29

lista =

...
19

0 1

A n a \0 P e p e \0

...

19

También podría gustarte