Lección 4 · 4 de 20
Cadenas de texto · C++
Trabaje con std::string en C++: unir con +, medir con size(), recortar con substr, buscar con find y convertir entre texto y números.

`std::string` guarda texto y sabe cuánto mide: full.size() da 12, los caracteres de Grace Hopper contando el espacio. El operador `+` une cadenas, y first + " " + last forma el nombre completo.
Con `[]` se lee un carácter por su posición, que empieza en 0: first[0] es 'G'. `substr(inicio, longitud)` copia un trozo: code.substr(0, 2) da ES y, sin longitud, code.substr(8) llega hasta el final: MAD.
`find()` busca un texto y devuelve su posición: 2024 empieza en la 3. Si no lo encuentra, devuelve el valor especial `std::string::npos`; por eso code.find("BCN") != std::string::npos vale 0, es decir, falso.
En C++ una cadena se puede modificar en su sitio: += añade texto al final y replace(0, 5, "Parcel") sustituye los 5 primeros caracteres por otros.
Para pasar de texto a número están `std::stoi` (entero) y `std::stod` (con decimales). `std::to_string` hace lo contrario, y así "Units: " + std::to_string(units) se puede unir con +.
Código · main.cpp
#include <iostream>#include <string>int main() { std::string first = "Grace"; std::string last = "Hopper"; // + joins strings; size() counts the characters. std::string full = first + " " + last; std::cout << full << " has " << full.size() << " characters\n"; // [] reads one character by position (the first one is 0). std::cout << "Initials: " << first[0] << last[0] << '\n'; // substr(start, length) copies a part; without length, up to the end. std::string code = "ES-2024-MAD"; std::cout << "Country: " << code.substr(0, 2) << ", city: " << code.substr(8) << '\n'; // find() returns the position, or std::string::npos if it is missing. std::cout << "The year starts at position " << code.find("2024") << '\n'; std::cout << "BCN found? " << (code.find("BCN") != std::string::npos) << '\n'; // A std::string can grow and be changed in place. std::string message = "Order"; message += " shipped"; message.replace(0, 5, "Parcel"); std::cout << message << '\n'; // Converting between text and numbers. int units = std::stoi("12"); double price = std::stod("2.5"); std::cout << "Units: " + std::to_string(units) << ", total: " << units * price << '\n'; return 0;}Salida · c++ -std=c++17 main.cpp -o main && ./main
Grace Hopper has 12 characters Initials: GH Country: ES, city: MAD The year starts at position 3 BCN found? 0 Parcel shipped Units: 12, total: 30
Para recordar
+une cadenas ysize()cuenta sus caracteres.s[0]es el primer carácter.substr(inicio, longitud)copia un trozo.find()devuelvestd::string::npossi no encuentra nada.std::stoi,std::stodystd::to_stringconvierten entre texto y números.
Ejercicio
Con std::string email = "lucia.perez@example.com";, separe el usuario y el dominio usando find('@') y substr, y escriba cuántos caracteres tiene cada parte.