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
- Concatenación de Cadenas: Unir dos o más cadenas.
- Acceso a Caracteres: Obtener y modificar caracteres individuales en una cadena.
- Subcadenas: Extraer partes de una cadena.
- Búsqueda en Cadenas: Encontrar subcadenas o caracteres específicos.
- Reemplazo de Subcadenas: Sustituir partes de una cadena por otra.
- 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.
Curso de Programación en C++
Módulo 1: Introducción a C++
- Introducción a C++
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Entrada y Salida
Módulo 2: Estructuras de Control
Módulo 3: Funciones
- Introducción a las Funciones
- Parámetros de Función y Tipos de Retorno
- Sobrecarga de Funciones
- Recursión
Módulo 4: Arreglos y Cadenas
- Introducción a los Arreglos
- Arreglos Multidimensionales
- Introducción a las Cadenas
- Manipulación de Cadenas
Módulo 5: Punteros y Referencias
- Introducción a los Punteros
- Aritmética de Punteros
- Punteros y Arreglos
- Referencias
- Asignación Dinámica de Memoria
Módulo 6: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulación y Abstracción
Módulo 7: Temas Avanzados
- Plantillas
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Biblioteca Estándar de Plantillas (STL)
- Expresiones Lambda
- Multihilo
