Quotes verwijderen uit een string

C++:
Quotes verwijderen uit een string

Hoe:

Hier is een eenvoudige manier om die aanhalingstekens in C++ opzij te zetten:

#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"("Hallo, 'Wereld'!")";
    std::string no_quotes = remove_quotes(original);
    std::cout << no_quotes << std::endl;
    return 0;
}

Voer dit uit, en je zult krijgen:

Hallo, Wereld!

Voilà! De aanhalingstekens zijn verdwenen.

Diepere Duik

Aanhalingstekens zijn al sinds de dageraad van de computer een tekstergernis. Vroeger zag je programmeurs moeizaam door elk karakter lopen om die aanhalingstekens te filteren. Tegenwoordig hebben we std::remove in de Standard Template Library (STL) om het zware werk te doen.

Alternatieven? Zeker! Je zou reguliere expressies met std::regex kunnen gebruiken om aanhalingstekens te richten, maar dat is een beetje alsof je een mokerslag gebruikt om een noot te kraken - krachtig, maar kan overkill zijn voor eenvoudige taken. Voor degenen die de recente C++ smaken prefereren, kun je experimenteren met std::string_view voor benaderingen zonder aanpassingen.

Wat de implementatie betreft, onthoud dat std::remove daadwerkelijk geen elementen uit de container verwijdert; het schuift niet-verwijderde elementen naar voren en retourneert een iterator voorbij het nieuwe einde van het bereik. Daarom is de erase methode nodig om de ongewenste staart af te hakken.

Zie Ook