Está en la página 1de 10

1

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
2
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 <<.
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.
void main()
{

cout << Esto es una cadena de texto;
}
3
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.
A p o l o 1 3 \0
La cadena de texto Apolo 13 se almacena as
4
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
A p o l o 1 3
Array de caracteres
de tamao 8.
Cadena de
de longitud 8.
5
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
char cabecera[10];
char nombre[8];
Ejemplos:
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
6
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];
char titulo_pelicula[10];
char titulo_pelicula[20];
char titulo_pelicula[8];
Es vlido cualquiera
de las 3
7
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
H o l a M u n d o \0 Cadena_texto =
H o l a \0
Saludo =
8
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?
Si se trata de inicializar la cadena en el cuerpo del programa de la
siguiente manera, nos dar un error de compilacin.
Ms adelante veremos que para realizar sta accin necesitamos recurrir
a funciones de cadena (string.h).

cadena_texto = Hola Mundo;
...
E
r
r
o
r

!!
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
9
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 cad_tres[20] = { Hola Mundo};
...
char saludo_uno[] = Hola ;
char saludo_dos[] = { Hola} ;
...
char saludo_tres[] = {H, o, l, a};
...
H o l a \0
saludo_uno = saludo_dos =
H o l a
saludo_tres =
cad_uno = cad_tres =
H o l a M u n d o \0

char nombre[4] = Luis;
...
L u i s
No podemos tratarlo como
una cadena. S como un array
de caracteres.
10
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 <<.
cout escribe todos los caracteres
desde la posicin 0 en adelante, hasta
que se encuentre el carcter nulo \0
char cad_uno[20] = Hola Mundo;
char nombre[4] = Luis;

cout << cad_uno;
cout << nombre;
H o l a M u n d o \0
cad_uno =
L u i s 6 9 g r t \0 v
nombre
=
En consola aparece: Hola Mundo
En consola aparece:
Luis69grt
11
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 ?
12
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Lectura de cadenas
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);
c
c a s \0
Si se introduce el texto casa
cin.getline: cadena tamao carcter void iostream.h
C++ dispone de funciones especficas que en unin con cin, permite la
lectura correcta de cadenas.
\0
13
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Lectura de cadenas
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";
...
cin.get : char bool iostream.h
cin.ignore() iostream.h
Sirve para leer uno o ms caracteres sin procesar del flujo de entrada.
El carcter fin de
archivo es:
Control+Z (Windows/Dos)
Control+D (Unix)
14
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Lectura de cadenas
Otras funciones para la lectura de cadenas.
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 );
...
H o l a M u n d o \0
Si se introduce el texto Hola Mundo
gets : cadena void stdio.h
nombre =
Console I/O
15
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Lectura de cadenas
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";
...
getch : void int conio.h
getchar : void int stdio.h
Sirve para leer el siguiente carcter del flujo de entrada. Se la llama sin
argumentos y devuelve un entero.
Ejemplo
Console I/O
16
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Lectura de cadenas
void main()
{
char letra ;
bool seguir = true;
while (seguir)
{
letra = getchar();
if (letra == '\n')
{
cout << "fin de lnea";
seguir = false;
}
else
cout << letra;
}
getch();
}
Ejemplo:
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.
17
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:
Devuelve la longitud de la cadena dada como argumento.
char nombre[30], dato[30] ;
int tamao;

gets(nombre);
...
tamao = strlen(nombre);
strcpy(dato, nombre);
...
strlen: cadena int string.h
Si se introduce el texto Hola Mundo,
la variable tamao toma el valor 10.
Copia la cadena_origen en la cadena_destino.
strcpy: cadena_destino cadena_origen void string.h
18
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Manipulacin de cadenas
Esta funcin compara sus dos argumentos que son de tipo cadena y devuelve un
entero.
char nombre[30] = Antonio, apellido[30]=Nebrija ;
int b;
.
b = strcmp(nombre,apellido); // devuelve un nmero negativo
strcat(nombre, apellido);
...
strcmp: cadena1 cadena2 int string.h
strcat: cadena_destino cadena_origen void string.h
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
Esta funcin concatena la cadena fuente a continuacin de la cadena destino.
19
INTRODUCCIN AL TIPO COMPUESTO CADENA
Cadenas de Texto: Arrays de cadenas
typedef char nombre[30];
.
nombre lista [20] ;
...
Para almacenar varios datos de tipo cadena en un array, podemos hacerlo de varias
formas:
1. Usando la instruccin typedef
.
char lista [20][30] ;
...
2. Usando un array de 2 dimensiones
... ...
A n a \0 ..
P e p e \0
0 1 2 29
0
1
19
lista =
vector = "Ana" "Pepe" "Juan"
0 1 19
lista =
Permite al programador definir un
nuevo tipo de datos en funcin de
tipos ya conocidos
Tipo de datos nombre

También podría gustarte