Anda di halaman 1dari 4

[ ]

Departament dInformtica
Departamento deInformtica
Informtica
PRCTICA 11
Curs 2002-2003
FACULTAT DE MATEMATIQUES
UNIVERSITAT DE VALENCIA
Prctica N 11: Cadenas de caracteres: strings 1/4
Prctica N 11: Cadenas de caracteres: strings
Objetivos de la prctica:
- Utilizacin de cadenas de caracteres (clase string de C++).
- Uso de funciones que operan con cadenas: funciones de la biblioteca string y de la ctype
- Uso de funciones de entrada y salida para trabajar con caracteres.
Cadenas de caracteres
Una cadena de caracteres (strings) no es ms que un array de caracteres. Por esta razn, se suele
relacionar el concepto de string con el de array.
Las cadenas nos permiten la manipulacin de textos.
En C++, existe el tipo (clase, en la nomenclatura de los lenguajes orientados a objetos) string. Para su
uso es preciso utilizar #include <string> (no usar <string.h> que es la cabecera
correspondiente a la biblioteca de cadenas en C).
Definicin de variables:
string palabra, frase;
string cadena(Hola);
Asignacin de variables:
frase = hola;
palabra = frase;
Acceso a los caracteres:
Accederemos a cada uno de los caracteres integrantes de la cadena como si accediramos a los
elementos de un array (una cadena es un array de caracteres).
char caracter
palabra=hola;
caracter= palabra[0] // Variable carcter tenemos el carcter h que es el
primer elemento // de la variable palabra
lectura/escritura:
Leer una palabra sola
cin >> palabra;
Leer toda una frase hasta encontrar el final de lnea.
getline (cin, frase); // lee la frase del teclado hasta encontrar el final
de lnea
cout << frase; //Muestra por pantalla una frase
[ ]
Departament dInformtica
Departamento deInformtica
Informtica
PRCTICA 11
Curs 2002-2003
FACULTAT DE MATEMATIQUES
UNIVERSITAT DE VALENCIA
Prctica N 11: Cadenas de caracteres: strings 2/4
Paso de cadenas a las funciones
Al igual que los arrays, cuando se pasa una cadena a una funcin, slo se le pasa la direccin de
comienzo de la cadena y no una copia de la cadena entera, es decir, el paso de cadenas como parmetro
de una funcin es tambin un paso por referencia, por tanto ser parmetro de entrada pero al mismo
tiempo ser parmetro de salida.
Funciones de entrada y salida de caracteres en C++
C++ ofrece algunos recursos para la entrada y salida de datos de caracteres.
Funcin Descripcin Ejemplos
cin.get(car);
Lee un carcter de entrada y lo guarda en una
variable de tipo char.
char c1;
cin.get(c1);
cout.put(car);
Escribe un carcter de tipo char por la salida
estndar.
char c1;
cout.put(c1);
cin.ignore( );
Este mtodo permite descartar caracteres
existentes en el buffer de entrada.
cin.get(ch1);
cin.ignore( ); // Ignora
\n
Operaciones que podemos realizar sobre las cadenas:
Operacin Descripcin Ejemplos
cad1 + cad2
Concatena (une) dos cadenas cad1=Buenos; cad2=dias;
concat1=cad1+cad2;
La variable frase contiene la cadena
buenosdias
concat2= cad1+ +cad2;
La variable concat2 contiene la cadena
Buenos dias.
cad1 += cad2
El contenido de cad2 se
concatena (aade) al final) de
cad2; el tamao se ajusta de
manera acorde.
cad1+=cad2;
En cad1 tenemos la cadena Buenosdias
cad2+=cad1;
En cad2 tenemos la cadena diasBuenos
cad1.insert(pos,cad2)
Inserta la cadena cad2 en la
cadena cad1 a partir de la
posicin pos.
cad1.insert(3,cad2);
En cad1 tenemos Buediasnos
len= cad1.length( );
Devuelve el nmero de
caracteres de la cadena cad1.
i= cad1.length( );
i vale 6 (6 caracteres de Buenos).
cad1.erase(pos,long)
Borra long caracteres de la
cadena cad1 desde la posicin
pos.
cad1.erase(1,3);
Borra los caracteres uen, en
[ ]
Departament dInformtica
Departamento deInformtica
Informtica
PRCTICA 11
Curs 2002-2003
FACULTAT DE MATEMATIQUES
UNIVERSITAT DE VALENCIA
Prctica N 11: Cadenas de caracteres: strings 3/4
cad1 tendremos la cadena Bos.
cad1.replace(pos,long,
cad2)
Sustituye (reemplaza) long
caracteres de la cadena cad1
Empezando en la posicin
pos, por la cadena cad2.
cad1.replace(0,3,cad2);
Sustituye los caracteres Bue de cad1 por
los caracteres dia de cad2. En cad1
tendremos diasnos.
pos= cad1.find (cad2)
Busca la cadena cad2 dentro
de la cadena cad1, nos
devuelve la posicin donde se
encuentra la primera
ocurrencia de cad2.
i=cad1.find(ue);
Devuelve 1
i=cad2.find(ue);
Devuelve -1, porque no se encuentra la
cadena ue en cad2.
cad1.substr(pos,long)
Devuelve una subcadena
formada por long caracteres
de la cadena cad1 desde la
posicin pos.
cad= cad1.substr(1,3);
La cadena cad es uen.
Comparaciones:
cad1==cad2 cad1 != cad2
cad1<cad2 cad1 > cad2
cad1<=cad2 cad2 >=cad2
Determina igualdad o desigualdad; devuelve un valor booleano.
Todas las comparaciones son lexicogrficas, de manera que
corresponden a nuestra idea intuitiva de cmo se comparan las
cadenas.
Funciones de carcter predefinidas
Algunas funciones que trabajan sobre caracteres y que nos pueden ser tiles en el procesamiento de
cadenas y por tanto de textos.
Estas funciones se encuentran definidas en la biblioteca ctype, necesitamos incluir la cabecera
include <ctype.h para utilizarlas.
Funcin Descripcin Ejemplo
toupper(car)
Devuelve la versin mayscula de car
char c= toupper(a);
En la variable c tenemos A;
tolower(car)
Devuelve la versin minscula de car
char c= tolower(A);
En la variable c tenemos a;
isupper(car)
Devuelve true si car es una letra mayscula;
de lo contrario devuelve false.
if (isupper(c))
cout<<c<<es mayscula;
islower(car)
Devuelve true si car es una letra minscula; de
lo contrario devuelve false.
if (islower(c))
cout<<c<< es minscula;
isalpha(car)
Devuelve true si car es una letra del alfabeto;
de lo contrario devuelve false.
char c=$;
if (isalpha(c))
[ ]
Departament dInformtica
Departamento deInformtica
Informtica
PRCTICA 11
Curs 2002-2003
FACULTAT DE MATEMATIQUES
UNIVERSITAT DE VALENCIA
Prctica N 11: Cadenas de caracteres: strings 4/4
cout<<c<< es una letra;
else
cout<<c<<no es una letra;
isdigit(car)
Devuelve true si car es uno de los dgitos de
0 a 9; de lo contrario devuelve false.
if (isdigit(3))
Cout << Es un digito;
isspase(car)
Devuelve true si car es un carcter de espacio
en blanco, como el smbolo de nueva lnea; de
lo contrario devuelve false.
do
{
cin.get(c);
} while (! isspase(c));

Anda mungkin juga menyukai