C++:
Capitalizando uma string
Como fazer:
Em C++, você pode capitalizar uma string usando a biblioteca padrão sem a necessidade de bibliotecas de terceiros. No entanto, para comportamentos de capitalização mais complexos ou específicos, bibliotecas como Boost podem ser bastante úteis. Abaixo estão exemplos ilustrando ambas abordagens.
Usando Biblioteca Padrão do C++:
#include <iostream>
#include <cctype> // para std::tolower e std::toupper
#include <string>
std::string capitalizeString(const std::string& input) {
std::string result;
bool capitalizeNext = true;
for (char ch : input) {
if (std::isspace(ch)) {
capitalizeNext = true;
} else if (capitalizeNext) {
ch = std::toupper(ch);
capitalizeNext = false;
}
result += ch;
}
return result;
}
int main() {
std::string text = "hello world from c++";
std::string capitalizedText = capitalizeString(text);
std::cout << capitalizedText << std::endl; // Saída: "Hello World From C++"
}
Usando Biblioteca Boost:
Para manipulações de strings mais avançadas, incluindo capitalização ciente de localidade, você pode querer usar a biblioteca Boost String Algo.
Primeiro, garanta que você tenha a biblioteca Boost instalada e configurada no seu projeto. Então você pode incluir os cabeçalhos necessários e usar seus recursos conforme mostrado abaixo.
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>
int main() {
std::string text = "hello world from c++";
std::string capitalizedText = text;
// capitalize a primeira letra de cada palavra
boost::algorithm::to_lower(capitalizedText); // garantindo que a string esteja em minúsculas
capitalizedText[0] = std::toupper(capitalizedText[0]); // deixando o primeiro caractere maiúsculo
for (std::size_t i = 1; i < capitalizedText.length(); ++i) {
if (isspace(capitalizedText[i - 1])) { // deixar maiúsculo depois de um espaço
capitalizedText[i] = std::toupper(capitalizedText[i]);
}
}
std::cout << capitalizedText << std::endl; // Saída: "Hello World From C++"
}
Neste caso, Boost simplifica algumas das tarefas de manipulação de strings, mas ainda requer uma abordagem personalizada para capitalização verdadeira, já que principalmente oferece utilitários de transformação e conversão de caso.