Introducción a las cadenas de caracteres
En C++ moderno existen dos formas principales de trabajar con cadenas de caracteres:
- La forma tradicional heredada de C: Una cadena de caracteres es simplemente un array de caracteres terminado en un carácter especial
'\0'(llamado carácter nulo). Esta forma sigue existiendo, pero es más propensa a errores y requiere mayor cuidado por parte del programador. - La forma moderna usando la clase
std::string: C++ proporciona la clasestd::stringen la biblioteca estándar, que permite trabajar con cadenas de forma más segura, sencilla y flexible.
Clases y objetos
- Clase: Tipo de dato personalizado.
- Objeto: es una variable de ese tipo de clase. Cada objeto guarda su propia información.
- Atributos (o miembros de datos): son las variables dentro de la clase, que guardan la información del objeto.
- Métodos (o funciones miembro): son las acciones que puede hacer el objeto, es decir, funciones asociadas a la clase.
Uso de la clase std::string
Para declarar una variable de tipo cadena, utilizamos la clase std::string. Podemos inicializarla directamente en el momento de la declaración utilizando inicialización uniforme {}, que es la forma recomendada en C++ moderno.
Podemos acceder a un carácter de la cadena, es lo que se llama indexación y lo hacemos utilizando un índice numérico, teniendo en cuenta que el primer carácter está en la posición 0.
Ejemplo:
#include <iostream>
#include <string>
int main() {
//Definición de una cadena en C clásico
//Tiene 5 caracteres, el último '\0'
char saludo[] = "Hola";
//Uso de la clase String
std::string cadena1 {};
std::string cadena2 {"Hola Mundo"};
std::cout << cadena2 << std::endl;
std::cout << cadena2[0] << std::endl; // Imprime: H
std::cout << cadena2.at(1) << std::endl; // Imprime: o
return 0;
}
- Es necesario incluir el archivo de cabeceras
stringpara trabajar con la clasestd::string. - Hay que tener en cuenta que el acceso con
texto[índice]no realiza comprobación de límites. Si se desea una forma más segura, se puede utilizar el métodoat():
Tamaño de la cadena
El método length() o size() devuelve el número de caracteres que contiene la cadena. Veamos un ejemplo:
#include <iostream>
#include <string>
int main() {
std::string texto {"Hola Mundo"};
std::cout << "La longitud es: " << texto.length() << std::endl;
std::cout << "Último carácter: " << texto[texto.size() - 1] << std::endl;
return 0;
}
Ambos métodos length() y size() son equivalentes en std::string.
Concatenación de cadenas
El operador + permite unir dos o más cadenas, generando una nueva. Veamos un ejemplo:
#include <iostream>
#include <string>
int main() {
std::string nombre {"Pepe"};
std::string apellidos {"García"};
std::string nombre_completo {};
nombre_completo = nombre + " " + apellidos;
std::cout << nombre_completo << std::endl;
return 0;
}