21/06/2011
La librería string en C++, parte fundamental de la C++ Standard Library, proporciona una clase std::stringque simplifica enormemente el manejo de cadenas de caracteres. A diferencia de los arrays de caracteres tradicionales de C, std::stringofrece mayor seguridad, flexibilidad y una gama de funciones integradas que facilitan diversas operaciones con texto.
Declaración e inicialización de std::string
Para utilizar la clase std::string, debemos incluir la cabecera correspondiente:
#include <string>La declaración de una variable de tipo std::stringes sencilla:

std::string miCadena; // Crea una cadena vacíaPara inicializar una cadena con un valor, existen varias opciones:

std::string miCadena = "Hola entorno"; // Inicialización directastd::string otraCadena("Ejemplo"); // Inicialización usando constructorConstructores de la clase std::string
La clase std::stringofrece diversos constructores para crear objetos de diferentes maneras:
string(): Crea una cadena vacía.string(const char): Crea una cadena a partir de un array de caracteres de tipo C.string(const string&): Crea una copia de otra cadena.string(const string&, size_t pos, size_t len = npos): Crea una subcadena a partir de otra cadena, comenzando en la posiciónposy con una longitud delencaracteres.string(size_t count, char c): Crea una cadena concountrepeticiones del carácterc.
Funciones miembro de std::string
La clase std::stringproporciona una amplia gama de funciones miembro para manipular cadenas. A continuación se detallan algunas de las más importantes, agrupadas por funcionalidad:
Funciones para obtener información
length()osize(): Devuelve la longitud de la cadena.empty(): Devuelvetruesi la cadena está vacía,falseen caso contrario.data(): Devuelve un puntero a un array de caracteres de tipo C que representa la cadena.
Funciones para modificar la cadena
append()o el operador+=: Añade texto al final de la cadena.insert(): Inserta texto en una posición específica.erase(): Elimina texto de la cadena.replace(): Reemplaza una parte de la cadena por otra.push_back(): Añade un carácter al final de la cadena.pop_back(): Elimina el último carácter de la cadena.resize(): Cambia el tamaño de la cadena.assign()o el operador=: Asigna un nuevo valor a la cadena.
Funciones para comparar cadenas
Los operadores de comparación ( ==, !=, <, >, <=, >=) se pueden usar para comparar cadenas. La comparación es sensible a mayúsculas y minúsculas.
Funciones para buscar subcadenas
find(): Busca la primera aparición de una subcadena.rfind(): Busca la última aparición de una subcadena.find_first_of(): Busca la primera aparición de cualquier carácter de un conjunto de caracteres.find_last_of(): Busca la última aparición de cualquier carácter de un conjunto de caracteres.
Funciones para iteradores
begin(): Devuelve un iterador al principio de la cadena.end(): Devuelve un iterador al final de la cadena.rbegin(): Devuelve un iterador inverso al final de la cadena.rend(): Devuelve un iterador inverso al principio de la cadena.
Operadores definidos para std::string
Además de las funciones miembro, la clase std::stringsobrecarga varios operadores para facilitar su uso:
- Asignación (
=): Asigna el contenido de una cadena a otra. - Concatenación (
+): Concatena dos cadenas. - Acceso por índice (
[]): Permite acceder a caracteres individuales de la cadena. - Comparación (
==,!=,<,>,<=,>=): Compara dos cadenas.
Ejemplos prácticos
A continuación, se presentan algunos ejemplos que ilustran el uso de las funciones de la librería string :

#include <iostream>#include <string>int main() { std::string cadena1 = "Hola"; std::string cadena2 = " Mundo"; std::string cadena3 = cadena1 + cadena2; // Concatenación std::cout << cadena3 << std::endl; // Imprime "Hola Mundo" std::cout << cadenalength() << std::endl; // Imprime 10 cadenainsert(5, ", cómo estás?"); // Inserción std::cout << cadena3 << std::endl; // Imprime "Hola, cómo estás? Mundo" size_t pos = cadenafind("estás"); // Búsqueda std::cout << pos << std::endl; // Imprime 6 return 0;}Comparativa: std::string vs. arrays de caracteres
Aunque los arrays de caracteres ( char[]) siguen siendo válidos en C++, std::stringofrece varias ventajas:
| Característica | std::string | char[] |
|---|---|---|
| Manejo de memoria | Automático, se adapta dinámicamente. | Manual, requiere asignación y liberación explícita de memoria. Mayor riesgo de errores. |
| Seguridad | Mayor seguridad, menor riesgo de desbordamiento de búfer. | Menor seguridad, vulnerable a desbordamientos de búfer. |
| Funcionalidad | Proporciona una gran cantidad de funciones integradas para manipular cadenas. | Requiere funciones adicionales para muchas operaciones con cadenas. |
| Facilidad de uso | Más fácil de usar y mantener. | Puede ser más complejo para operaciones complejas. |
Consultas habituales sobre la librería string en C++
Estas son algunas de las preguntas más frecuentes sobre la librería string de C++ :
- ¿Cómo convertir un std::string a un char? : Se puede usar la función
c_str(). - ¿Cómo convertir un char a un std::string? : Se puede usar el constructor
std::string(const char). - ¿Cómo comparar cadenas sin distinción de mayúsculas y minúsculas? : Se pueden usar funciones como
std::toupperystd::tolowerpara convertir las cadenas a mayúsculas o minúsculas antes de la comparación, o bien utilizar algoritmos de comparación sin distinción de mayúsculas. - ¿Cómo eliminar espacios en blanco de un std::string? : Se pueden usar algoritmos como
std::removeystd::erasepara eliminar los espacios.
Esta tutorial proporciona una visión completa de la librería string en C++. La práctica y la exploración adicional de sus funciones te permitirán dominar el manejo de cadenas en tus programas C++.
Si quieres conocer otros artículos parecidos a Librería string en c++ para principiantes y expertos puedes visitar la categoría Libros y Librerías.
