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 moderna
Para 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 índicea
que tieneb
caracteres, si utilizosubstr(a)
obtengo una subcadena desde el índicea
hasta 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 remplazab
caracteres desde el índicea
por 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;
}