Cadenas de caracteres con la clase string
En el apartado Introducción a las cadenas de caracteres estuvimos estudiando varios aspectos de las cadenas en c++ usando la clase string:
- Declaración de las cadenas de caracteres.
- Indexación de los carácteres.
- Concatenación de cadenas con el operador
+. - Algunos métodos de la clase string
Vamos a profundizar en el uso de algunos métodos de clase de string.
Principales métodos de la clase string
Vamos a ver los ejemplos a partir de esta cadena:
string cadena="informática";
-
clear(): Borra todos los caracteres de una cadena. Ejemplo:cadena.clear(); cout << cadena; //No muestra nada, la cadena está vacía -
length()osize(): Devuelve la cantidad de caracteres que tiene una cadena. Ejemplo:cout << "La cadena " << cadena << " tiene " << cadena.length() << " caracteres."; La salida sería: La cadena informática tiene 11 caracteres. -
front()yback(): Devuelve el primer carácter y el último de una cadena. Ejemplo:cout << "Primer carácter: " << cadena.front() << endl; //Igual que cadena[0] cout << "Último carácter: " << cadena.back() << endl; // Igual que cadena[[cadena.length() - 1]]La salida sería:
Primer carácter: i Último carácter: a -
append(): Nos permite añadir otra cadena al final de la primera. Ejemplo:cadena.append(" moderna"); //Es lo mismo que cadena += " moderna"; cout << cadena;La salida sería:
informática modernaPara añadir una variable de tipo carácter tengo que indicar el número de carácteres:
char car='0'; cadena.append(1,car); cout << cadena;La salida sería:
informática moderna0 -
find(): Busca la aparición de una subcadena dentro de una cadena. Devuelve la posición de la subcadena encontrada. Si no la encuentra devuelve -1. Ejemplo:if(cadena.find("i")!=-1) cout << "Posición del primer carácter i: " << cadena.find("i") << endl; cout << "Posición del segundo carácter i: " << cadena.find("i",1) << endl;La salida sería:
Posición del primer carácter i: 0 Posición del segundo carácter i: 8 -
substr(): Devuelve una subcadena de una cadena. Si utilizosubstr(a,b)obtiene una sebcadena desde el índiceaque tienebcaracteres, si utilizosubstr(a)obtengo una subcadena desde el índiceahasta el final. y Ejemplo:string subcad; subcad=cadena.substr(2,3); cout << subcad << endl; subcad=cadena.substr(5); cout << subcad << endl;La salida sería:
for mática -
replace(): Reemplaza parte de una cadena por otra. Se utiliza comoreplace(a, b, str)que remplazabcaracteres desde el índiceapor la cadenastr. Ejemplo:cadena.replace(6,5,"ación"); cout << cadena << endl;La salida sería:
información
Ejemplo completo
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
string cadena="informática";
//Borramos los caracteres de la cadena
cadena.clear();
cout << cadena; //No muestra nada
//Volvemos a inicializar con un valor
cadena="informática";
//Longitud de la cadena
cout << "La cadena " << cadena << " tiene " << cadena.length() << " caracteres." << endl;
//Primer y último carácter
cout << "Primer carácter: " << cadena.front() << endl; //Igual que cadena[0]
cout << "Último carácter: " << cadena.back() << endl; // Igual que cadena[[cadena. length() - 1]]
//Añadir cadenas
cadena.append(" moderna"); //Es lo mismo que cadena += " moderna";
cout << cadena << endl;
//Añadimos un carácter
char car='0';
cadena.append(1,car);
cout << cadena << endl;
//Volvemos a inicializar con un valor
cadena="informática";
//Buscar caracteres
if(cadena.find("i")!=-1)
cout << "Posición del primer carácter i: " << cadena.find("i") << endl;
cout << "Posición del segundo carácter i: " << cadena.find("i",1) << endl;
//Extraer subcadenas
string subcad;
subcad=cadena.substr(2,3);
cout << subcad << endl;
subcad=cadena.substr(5);
cout << subcad << endl;
// Reemplazar parte de la cadena
cadena.replace(6,5,"ación");
cout << cadena << endl;
return 0;
}