C++:
Capitalizando una cadena de texto
Cómo hacerlo:
En C++, puedes capitalizar un string utilizando la biblioteca estándar sin necesidad de bibliotecas de terceros. Sin embargo, para comportamientos de capitalización más complejos o específicos, bibliotecas como Boost pueden ser bastante útiles. A continuación, se muestran ejemplos que ilustran ambos enfoques.
Usando la Biblioteca Estándar de C++:
#include <iostream>
#include <cctype> // para std::tolower y std::toupper
#include <string>
std::string capitalizeString(const std::string& entrada) {
std::string resultado;
bool capitalizarSiguiente = true;
for (char ch : entrada) {
if (std::isspace(ch)) {
capitalizarSiguiente = true;
} else if (capitalizarSiguiente) {
ch = std::toupper(ch);
capitalizarSiguiente = false;
}
resultado += ch;
}
return resultado;
}
int main() {
std::string texto = "hello world from c++";
std::string textoCapitalizado = capitalizeString(texto);
std::cout << textoCapitalizado << std::endl; // Salida: "Hello World From C++"
}
Usando la Biblioteca Boost:
Para manipulaciones de strings más avanzadas, incluyendo la capitalización consciente de la configuración regional, podrías querer usar la biblioteca Boost String Algo.
Primero, asegúrate de tener la biblioteca Boost instalada y configurada en tu proyecto. Luego puedes incluir las cabeceras necesarias y usar sus características como se muestra a continuación.
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>
int main() {
std::string texto = "hello world from c++";
std::string textoCapitalizado = texto;
// capitalizar la primera letra de cada palabra
boost::algorithm::to_lower(textoCapitalizado); // asegurando que el string esté en minúscula
textoCapitalizado[0] = std::toupper(textoCapitalizado[0]); // capitalizar el primer carácter
for (std::size_t i = 1; i < textoCapitalizado.length(); ++i) {
if (isspace(textoCapitalizado[i - 1])) { // capitalizar después de un espacio
textoCapitalizado[i] = std::toupper(textoCapitalizado[i]);
}
}
std::cout << textoCapitalizado << std::endl; // Salida: "Hello World From C++"
}
En este caso, Boost simplifica algunas de las tareas de manipulación de strings pero aún requiere un enfoque personalizado para una verdadera capitalización, ya que principalmente ofrece utilidades de transformación y conversión de casos.