Retirer les guillemets d'une chaîne

C++:
Retirer les guillemets d'une chaîne

Comment faire :

Voici une manière directe d’éliminer ces guillemets en 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"("Bonjour, 'Monde'!")";
    std::string sans_guillemets = remove_quotes(original);
    std::cout << sans_guillemets << std::endl;
    return 0;
}

Exécutez cela, et vous obtiendrez :

Bonjour, Monde!

Voilà ! Les guillemets ont disparu.

Exploration détaillée

Les guillemets sont une nuisance textuelle depuis l’aube de l’informatique. À l’époque, vous verriez des programmeurs parcourir laborieusement chaque caractère pour filtrer ces guillemets. Aujourd’hui, nous disposons de std::remove dans la Bibliothèque de modèles standard (STL) pour faire le gros du travail.

Des alternatives ? Bien sûr ! Vous pourriez utiliser des expressions régulières avec std::regex pour cibler les guillemets, mais c’est un peu comme utiliser un marteau-pilon pour casser une noix - puissant, mais peut être excessif pour des tâches simples. Pour ceux qui privilégient les versions récentes de C++, vous pourriez expérimenter avec std::string_view pour des approches non-modifiantes.

En termes d’implémentation, souvenez-vous que std::remove n’élimine pas réellement les éléments du conteneur ; il réorganise les éléments non supprimés vers l’avant et retourne un itérateur juste après la nouvelle fin de la gamme. C’est pourquoi nous avons besoin de la méthode erase pour couper la queue indésirable.

Voir aussi