Anführungszeichen aus einem String entfernen

C++:
Anführungszeichen aus einem String entfernen

Wie geht das:

Hier ist eine unkomplizierte Methode, um in C++ diese Anführungszeichen loszuwerden:

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

Führen Sie dies aus, und Sie erhalten:

Hallo, Welt!

Voilà! Die Anführungszeichen sind verschwunden.

Tiefere Einblicke

Anführungszeichen sind seit den Anfängen der Computertechnik ein Textärgernis. Früher sah man Programmierer mühsam durch jeden Buchstaben schleifen, um diese Anführungszeichen zu filtern. Heutzutage haben wir std::remove in der Standardvorlagenbibliothek (STL), um die harte Arbeit zu übernehmen.

Alternativen? Sicher! Sie könnten reguläre Ausdrücke mit std::regex verwenden, um Anführungszeichen gezielt anzugehen, aber das ist ein bisschen so, als würde man mit einem Vorschlaghammer eine Nuss knacken - kraftvoll, aber für einfache Aufgaben überdimensioniert. Für diejenigen, die die neueren C++-Varianten bevorzugen, könnten Sie mit std::string_view für nicht-modifizierende Ansätze experimentieren.

Implementierungstechnisch betrachtet, entfernt std::remove tatsächlich keine Elemente aus dem Container; es sortiert nicht entfernte Elemente nach vorne und gibt einen Iterator hinter das neue Ende der Auswahl zurück. Deshalb benötigen wir die erase Methode, um den ungewünschten Schwanz abzuschneiden.

Siehe auch