En este tema, aprenderemos cómo manipular cadenas en C++. Las cadenas son una parte fundamental de la programación, ya que permiten manejar texto de manera eficiente. Veremos cómo realizar operaciones comunes como concatenación, búsqueda, reemplazo y más.

Conceptos Clave

  1. Concatenación de Cadenas: Unir dos o más cadenas.
  2. Acceso a Caracteres: Obtener y modificar caracteres individuales en una cadena.
  3. Subcadenas: Extraer partes de una cadena.
  4. Búsqueda en Cadenas: Encontrar subcadenas o caracteres específicos.
  5. Reemplazo de Subcadenas: Sustituir partes de una cadena por otra.
  6. Comparación de Cadenas: Comparar dos cadenas para ver si son iguales o determinar su orden lexicográfico.

Concatenación de Cadenas

La concatenación de cadenas en C++ se puede realizar utilizando el operador + o la función append().

Ejemplo con el Operador +

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hola, ";
    std::string str2 = "Mundo!";
    std::string result = str1 + str2;
    std::cout << result << std::endl; // Salida: Hola, Mundo!
    return 0;
}

Ejemplo con la Función append()

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hola, ";
    std::string str2 = "Mundo!";
    str1.append(str2);
    std::cout << str1 << std::endl; // Salida: Hola, Mundo!
    return 0;
}

Acceso a Caracteres

Puedes acceder a caracteres individuales de una cadena utilizando el operador de índice [] o la función at().

Ejemplo con el Operador []

#include <iostream>
#include <string>

int main() {
    std::string str = "Hola";
    char ch = str[1];
    std::cout << ch << std::endl; // Salida: o
    return 0;
}

Ejemplo con la Función at()

#include <iostream>
#include <string>

int main() {
    std::string str = "Hola";
    char ch = str.at(1);
    std::cout << ch << std::endl; // Salida: o
    return 0;
}

Subcadenas

Puedes extraer subcadenas utilizando la función substr().

Ejemplo de substr()

#include <iostream>
#include <string>

int main() {
    std::string str = "Hola, Mundo!";
    std::string sub = str.substr(0, 4);
    std::cout << sub << std::endl; // Salida: Hola
    return 0;
}

Búsqueda en Cadenas

Para buscar caracteres o subcadenas, puedes usar las funciones find() y rfind().

Ejemplo de find()

#include <iostream>
#include <string>

int main() {
    std::string str = "Hola, Mundo!";
    size_t pos = str.find("Mundo");
    if (pos != std::string::npos) {
        std::cout << "Encontrado en la posición: " << pos << std::endl; // Salida: Encontrado en la posición: 6
    } else {
        std::cout << "No encontrado" << std::endl;
    }
    return 0;
}

Reemplazo de Subcadenas

Puedes reemplazar partes de una cadena utilizando la función replace().

Ejemplo de replace()

#include <iostream>
#include <string>

int main() {
    std::string str = "Hola, Mundo!";
    str.replace(6, 5, "Amigo");
    std::cout << str << std::endl; // Salida: Hola, Amigo!
    return 0;
}

Comparación de Cadenas

Para comparar cadenas, puedes usar los operadores de comparación (==, !=, <, >, <=, >=) o la función compare().

Ejemplo de Comparación con Operadores

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hola";
    std::string str2 = "Mundo";
    if (str1 == str2) {
        std::cout << "Las cadenas son iguales" << std::endl;
    } else {
        std::cout << "Las cadenas son diferentes" << std::endl; // Salida: Las cadenas son diferentes
    }
    return 0;
}

Ejemplo de Comparación con compare()

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hola";
    std::string str2 = "Mundo";
    int result = str1.compare(str2);
    if (result == 0) {
        std::cout << "Las cadenas son iguales" << std::endl;
    } else if (result < 0) {
        std::cout << "str1 es menor que str2" << std::endl; // Salida: str1 es menor que str2
    } else {
        std::cout << "str1 es mayor que str2" << std::endl;
    }
    return 0;
}

Ejercicios Prácticos

Ejercicio 1: Concatenación de Cadenas

Escribe un programa que tome dos cadenas de entrada del usuario y las concatene.

#include <iostream>
#include <string>

int main() {
    std::string str1, str2;
    std::cout << "Ingrese la primera cadena: ";
    std::getline(std::cin, str1);
    std::cout << "Ingrese la segunda cadena: ";
    std::getline(std::cin, str2);
    std::string result = str1 + " " + str2;
    std::cout << "Cadena concatenada: " << result << std::endl;
    return 0;
}

Ejercicio 2: Búsqueda y Reemplazo

Escribe un programa que busque una subcadena en una cadena dada y la reemplace por otra subcadena.

#include <iostream>
#include <string>

int main() {
    std::string str, to_find, to_replace;
    std::cout << "Ingrese la cadena principal: ";
    std::getline(std::cin, str);
    std::cout << "Ingrese la subcadena a buscar: ";
    std::getline(std::cin, to_find);
    std::cout << "Ingrese la subcadena de reemplazo: ";
    std::getline(std::cin, to_replace);

    size_t pos = str.find(to_find);
    if (pos != std::string::npos) {
        str.replace(pos, to_find.length(), to_replace);
        std::cout << "Cadena resultante: " << str << std::endl;
    } else {
        std::cout << "Subcadena no encontrada" << std::endl;
    }
    return 0;
}

Resumen

En esta sección, hemos aprendido cómo manipular cadenas en C++. Hemos cubierto la concatenación, el acceso a caracteres, la extracción de subcadenas, la búsqueda, el reemplazo y la comparación de cadenas. Estos conceptos son fundamentales para trabajar con texto en C++ y te preparan para manejar datos textuales de manera eficiente en tus programas.

© Copyright 2024. Todos los derechos reservados