Tema 5 Anexo - Facultad de Informática

Anuncio
Fundamentos de la programación
5A
GradoenIngenieríaInformática
GradoenIngenieríadelSoftware
GradoenIngenieríadeComputadores
LuisHernándezYáñez/PabloMorenoGer
FacultaddeInformática
UniversidadComplutense
Luis Hernández Yáñez/Pablo Moreno Ger
Cadenas al estilo de C
E/S con cadenas al estilo de C
La biblioteca cstring
Ejemplo
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
582
583
584
585
Arraysdecaracteresterminadosennulo
const Max = 15;
typedef char tCadena[Max];
tCadena cadena = "Adiós"; // Inicialización al declarar
Siemprehayalfinaluncarácternulo(códigoASCII0 – '\0')
Indicaqueenesaposiciónterminalacadena(exclusive)
Luis Hernández Yáñez/Pablo Moreno Ger
cadena
A
d
i
ó
s
\0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnelarraycabenMAX‐1caracteressignificativos
Longitudmáximadelavariablecadena:14
No sepuedenasignarcadenasliterales:cadena = "Hola";
Ni copiarcadenasdirectamente:cad2 = cad1;
Ni compararconop.relacionales:if (cad1 < cad2) ...
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
Página 582
tCadena cadena;
cin >> cadena; // Se añade un nulo al final
Extractor:lalecturaterminaenelprimerespacioenblanco
¡Nosecompruebasiseleenmáscaracteresdelosquecaben!
setw():máximodecaracteresacolocar(incluyendoelnulo)
Luis Hernández Yáñez/Pablo Moreno Ger
cin >> setw(15) >> cadena;
cin.getline(cadena_estilo_C, máx):
Paraleertambiénlosespaciosenblancoynomásdemáx‐1
cin.getline(cadena, 15); // Hasta 14 caracteres
cout << cadena << endl; // El nulo no se muestra
cin.getline(cad, máx) CadenasalestilodeC
getline(cin, cad)
Cadenasdetipostring
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
Página 583
 strlen(cadena):longitudactualdelacadena
cout << "Longitud: " << strlen(cadena);
 strcpy(destino, origen):copiaorigen endestino
strcpy(cad2, cad1); strcpy(cad, "Me gusta C++");
Luis Hernández Yáñez/Pablo Moreno Ger
 strcat(destino, origen):añadeorigen alfinaldedestino
tCadena cad1 = "Hola", cad2 = "Adiós";
strcat(cad1, cad2); // cad1 contiene "HolaAdiós"
 strcmp(cad1, cad2):comparalexicográficamentelascadenas
0 sisoniguales,1 sicad1 >cad2 ó‐1 sicad1 <cad2
tCadena cad1 = "Hola", cad2 = "Adiós";
strcmp(cad1, cad2) // Devuelve 1 ("Hola" > "Adiós")
...
http://www.cplusplus.com/reference/clibrary/cstring/
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
Página 584
cadenas.cpp
Luis Hernández Yáñez/Pablo Moreno Ger
#include <iostream>
using namespace std;
#include <cstring>
int main() {
const int MAX = 20;
typedef char tCad[MAX];
tCad cadena = "Me gusta C++";
cout << cadena << endl;
cout << "Cadena: ";
cin >> cadena; // Lee hasta el primer espacio en blanco
cout << cadena << endl;
cin.sync(); // Sincronizar la entrada
cout << "Cadena: ";
cin.getline(cadena, MAX);
cout << cadena << endl;
cout << "Longitud: " << strlen(cadena) << endl;
strcpy(cadena, "Hola");
...
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
Página 585
Luis Hernández Yáñez/Pablo Moreno Ger
tCad cadena2 = " amigo";
strcat(cadena, cadena2);
cout << cadena << endl;
if (strcmp(cadena, cadena2) == 0) {
cout << "Iguales";
}
else if (strcmp(cadena, cadena2) > 0) {
cout << cadena << " es mayor que " << cadena2;
}
else {
cout << cadena << " es menor que " << cadena2;
}
cout << endl;
return 0;
}
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
Página 586
LicenciaCC(Creative Commons)
Estetipodelicenciasofrecenalgunosderechosaterceraspersonas
bajociertascondiciones.
Estedocumentotieneestablecidaslassiguientes:
Luis Hernández Yáñez/Pablo Moreno Ger
Reconocimiento(Attribution):
Encualquierexplotacióndelaobraautorizadaporlalicencia
haráfaltareconocerlaautoría.
Nocomercial(Noncommercial):
Laexplotacióndelaobraquedalimitadaausosnocomerciales.
Compartirigual(Sharealike):
Laexplotaciónautorizadaincluyelacreacióndeobrasderivadas
siemprequemantenganlamismalicenciaalserdivulgadas.
Pulsaenlaimagendearribaaladerechaparasabermás.
Fundamentos de la programación: Cadenas al estilo de C (Anexo)
Página 587
Descargar