C++:
Removendo aspas de uma string
Como fazer:
Aqui vai uma maneira direta de se livrar dessas aspas em C++:
#include <iostream>
#include <algorithm>
std::string remove_quotes(std::string input) {
input.erase(std::remove(input.begin(), input.end(), '\"'), input.end());
input.erase(std::remove(input.begin(), input.end(), '\''), input.end());
return input;
}
int main() {
std::string original = R"("Olá, 'Mundo'!")";
std::string sem_aspas = remove_quotes(original);
std::cout << sem_aspas << std::endl;
return 0;
}
Execute isso, e você obterá:
Olá, Mundo!
Voilà! As aspas desapareceram.
Aprofundando
Aspas têm sido uma chateação textual desde o início da computação. Antigamente, você via programadores laboriosamente passando por cada caractere para filtrar essas aspas. Hoje, nós temos std::remove
na Standard Template Library (STL) para fazer o trabalho pesado.
Alternativas? Claro! Você poderia usar expressões regulares com std::regex
para mirar nas aspas, mas isso é meio que usar um martelo para quebrar uma noz - poderoso, mas pode ser exagero para tarefas simples. Para aqueles que preferem sabores recentes de C++, vocês podem experimentar com std::string_view
para abordagens não modificadoras.
Em termos de implementação, lembre-se que std::remove
não remove elementos do container; ele reorganiza os elementos não removidos para frente e retorna um iterador para o novo fim do intervalo. É por isso que precisamos do método erase
para cortar a cauda indesejada.
Veja Também
- Referência do C++
std::remove
: cppreference.com - Mais sobre manipulação de
std::string
: cplusplus.com