DMarlon Studio

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.

C++ · Cadenas de texto en DMarlon Studio: el código del ejemplo y su salida en la terminal

`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 y size() cuenta sus caracteres.
  • s[0] es el primer carácter.
  • substr(inicio, longitud) copia un trozo.
  • find() devuelve std::string::npos si no encuentra nada.
  • std::stoi, std::stod y std::to_string convierten 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.