Está en la página 1de 4

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA


CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Cadenas de Carcter

A diferencia de otros lenguajes de programacin que emplean un tipo


denominado cadena string para manipular un conjunto de smbolos, en C++, se
debe simular mediante un arreglo de caracteres, en donde la terminacin de la
cadena se debe indicar con nulo. Un nulo se especifica como '\0'. Por lo anterior,
cuando se declare un arreglo de caracteres se debe considerar un carcter
adicional a la cadena ms larga que se vaya a guardar. Por ejemplo, si se quiere
declarar un arreglo cadena que guarde una cadena de diez caracteres, se har
como:

char cadena[11];

Se pueden hacer tambin inicializaciones de arreglos de caracteres en donde


automticamente C++ asigna el caracter nulo al final de la cadena, de la siguiente
forma:

char nombre_arr[ tam ]="cadena";

Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'':

char cadena[5]="hola";

El cdigo anterior es equivalente a: char cadena[5]={'h','o','l','a','\0'};

Para asignar la entrada estndar a una cadena se puede usar la instruccin cin>>
que almacenar una cadena hasta que encuentre un espacio, los dems
caracteres no sern guardados. Por lo tanto cuando se requiere almacenar una
frase que contenga ms de una palabra se debe utilizar la instruccin
cin.getline(nombre_variable, tamao_de_la_cadena).

Es decir, si se requiere almacenar un apellido (una sola palabra) se utilizar


cin>>NOMBRE_VARIABLE;

Y para almacenar un nombre completo (nombres y apellidos) se utilizar


cin.getline(NOMBRE VARIABLE, TAMAO_DE_LA_CADENA).

Por supuesto que las variables deben ser vectores de tipo char, puesto que el tipo
de dato cadena no existe en el lenguaje C++

Ejemplo:

/*Autor: Mirian Benavides - UNAD


Programa: Cadenas 1
IDE FALCON */

U3 Pgina 8
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

//DIRECTIVAS DEL PRE-PROCESADOR


#include <iostream>
#include <stdlib.h>
#include <stdio.h> /*Libreria para utilizar la instruccin
fflush(stdin) que permite vaciar o limpiar
el buffer del teclado */

using namespace std;

int main() //Funcin principal


{ char palabra[15], frase[40]; // Declaracin de vectores para
almacenar cadenas
cout<<"REGISTRO DE UNA PALABRA Y UNA FRASE";
cout<<endl <<endl <<"Digite una palabra : ";
cin>>palabra;
fflush(stdin); //limpiar el buffer
cout<<endl <<"Digite una frase : ";
cin.getline(frase,40);
cout<<endl <<endl <<"INFORMACION REGISTRADA";
cout<<endl <<endl <<"Palabra : " << palabra;
cout<<endl <<"Frase : " << frase;
cout<<endl <<endl;
system("pause");
return 0;
}

El lenguaje C++ no maneja cadenas de caracteres, como se hace con enteros o


flotantes, por lo que lo siguiente no es vlido:

int main()
{
char nombre[40], apellidos[40], completo[80];
nombre="Jos Mara"; // Ilegal
apellidos="Morelos y Pavn"; // Ilegal
completo="Gral."+nombre+appellidos; // Ilegal
return 0;
}

Funciones de cadena

Existen funciones de carcter y cadena que amplan sus posibilidades de uso, a


continuacin se explican algunas de ellas.

Funciones de Carcter

U3 Pgina 9
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Para trabajarlas es necesario incluir en los programas la librera ctype.h

toupper( variable_char ): convierte un caracter a maysculas.


Ej. 1 char rta = s;
rta = toupper( rta ); // en la variable rta se encuentra ahora el carcter S

Ej. 2 char x;
x = toupper(getche( )); // guarda en la variable x una letra en maysculas
// digitada por el usuario.
Ej. 3 if ( toupper( getche( ) = = S) // verifica que la letra digitada por el
// usuario sea S.

tolower( variable_char) convierte un carcter a minsculas.

Funciones de Cadena

Para trabajar con cadenas es necesario utilizar ciertas funciones, que requieren
incluir en el programa la libreria: string.h

strcpy(cadena1,cadena2): copia en cadena1 el contenido de cadena2.


El primer argumento deben ser de tipo array de caracteres, el segundo puede
ser un array de caracteres o una expresin encerrada entre comillas dobles.
Ej. 1 char t1[20];
strcpy(t1,HOLA);
Ej. 2 char t2[20], t3[20]=PASTO;
strcpy(t1,t2);

strcat(cadena1, cadena2): se utiliza para unir dos cadenas. El resultado se


guarda en la cadena1.
Ej. 1 char t1[20]=HOLA;
strcat(t1,JUAN);
Ej. 2 char t1[20]=HOLA, t2[20]=MUNDO;
strcat(t1,t2);
Si se requiere un espacio, este debe estar incluido en una de las cadenas

strcmp(cadena1, cadena2): compara dos cadenas y devuelve el valor 0 si las


cadenas son iguales. Si la cadena1 es lexicogrficamente mayor que la
cadena2, devuelve un valor positivo, de lo contrario ser negativo.

Como la funcin devuelve un valor entero, es necesario asignarlo a una


variable de ese tipo, y luego evaluarla
Ej 1. int rta;
rta = strcmp(HOLA,hola);
if (rta= =0) printf(iguales);
else printf(diferentes);

U3 Pgina 10
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Ej. 2 int rta;


char t1[2]=a,t2[2]=A;
rta = strcmp(t1,t2);
if (rta= = 0) printf(iguales);
else printf(diferentes);
Ej. 3 int rta;
char t1[20]=SISTEMAS;
rta = strcmp(t1,informatica);
if (rta= = 0) printf(iguales);
else printf(diferentes);
Ej. 4 char t1[10]:
for( ; ; )
{ printf(\ndigite una palabra); gets(t1);
if (strcpm(salir,t1)) break;
}

strlen(cadena): devuelve el nmero de caracteres que tiene la cadena.


Ej. 1 int x;
x = strlen(informatica);
E. 2 int x;
char t1[10]=CALI;
x = strlen(t1);
Ej. 3 int x;
char t1[20]
x = strlen(gets(t1));

U3 Pgina 11

También podría gustarte