Skip to content
Clases

Strings en C++

En C++, las strings son secuencias de caracteres utilizadas para almacenar texto. Aunque existen desde C, C++ introduce una clase poderosa para manejarlas.

Es la forma “antigua” y cruda de manejar texto.

  • Se almacena como un char[] terminado en \0 (carácter nulo).
  • Gestión manual de memoria (¡Peligroso!).
  • Requiere funciones externas (<cstring>) como strcpy, strlen.
char texto[] = "Hola, mundo"; // Termina implícitamente en \0

Es una clase moderna incluida en la librería <string>.

  • Memoria dinámica: Se redimensiona automáticamente según lo necesites.
  • Intuitiva: Soporta operadores naturales como + (concatenar), == (comparar), o = (asignar).
  • Segura: Reduce drásticamente los errores de memoria y desbordamiento de búfer.
#include <iostream>
#include <string>
using namespace std;
int main() {
string saludo = "Hola, ";
string nombre = "Mundo";
// Concatenación fácil
string completo = saludo + nombre; // "Hola, Mundo"
// Comparación directa
if (completo == "Hola, Mundo") {
cout << "Coincide perfectamente" << endl;
}
return 0;
}

La clase std::string viene equipada con muchas herramientas útiles. Aquí las más comunes:

OperaciónMétodoDescripción
Accesos[i]Accede al carácter en el índice i.
s.back()Devuelve el último carácter.
Tamaños.size() / s.length()Devuelve la longitud de la cadena.
Modificars.push_back(c)Agrega un carácter c al final.
s.pop_back()Elimina el último carácter.
s += "txt"Concatena texto al final.
s.clear()Borra todo el contenido.
Subcadenas.substr(pos, len)Extrae len caracteres desde el índice pos.
Buscars.find(sub)Devuelve el índice de sub o string::npos si no existe.

1. Transformaciones (Mayúsculas/Minúsculas)

Section titled “1. Transformaciones (Mayúsculas/Minúsculas)”

Para esto usamos std::transform de la librería <algorithm>.

#include <algorithm>
#include <string>
#include <iostream>
using namespace std;
int main() {
string s = "Hola Mundo";
// Convertir a MAYÚSCULAS
// Parámetros: (InicioInput, FinInput, InicioOutput, Operacion)
transform(s.begin(), s.end(), s.begin(), ::toupper);
cout << s << endl; // Imprime "HOLA MUNDO"
// Convertir a minúsculas
transform(s.begin(), s.end(), s.begin(), ::tolower);
return 0;
}

Muy útil en problemas donde te dan números como texto y necesitas operar con ellos.

#include <string>
#include <iostream>
using namespace std;
int main() {
string s = "123";
// String a Número
int n = stoi(s); // String to Int
long long x = stoll(s); // String to Long Long
double d = stod(s); // String to Double
// Número a String
string s2 = to_string(45);
string s3 = to_string(3.14159);
return 0;
}

Practica la manipulación de cadenas con estos problemas: