Heim >Backend-Entwicklung >C++ >Wie kann man Teilstrings in C-Strings effizient ersetzen?

Wie kann man Teilstrings in C-Strings effizient ersetzen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-22 05:02:13364Durchsuche

How to Efficiently Replace Substrings in C   Strings?

Teil eines Strings durch einen anderen String ersetzen

Das Ersetzen eines Teilstrings innerhalb eines Strings ist eine häufige Aufgabe in der Programmierung, und C bietet mehrere Möglichkeiten es zu tun. Ein Ansatz besteht darin, die Standardfunktionen der C-Bibliothek „Suchen und Ersetzen“ zu verwenden.

Suchen und Ersetzen verwenden

Die Suchfunktion verwendet eine Zeichenfolge und eine Teilzeichenfolge als Argumente und führt sie aus gibt die Position des Teilstrings innerhalb des Strings zurück. Wenn der Teilstring nicht gefunden wird, gibt find den String::npos zurück. Um einen Teilstring durch einen anderen Teilstring zu ersetzen, können Sie die Ersetzungsfunktion verwenden. Die Ersetzungsfunktion benötigt eine Zeichenfolge, eine zu ersetzende Teilzeichenfolge und eine neue Teilzeichenfolge, durch die sie ersetzt werden soll. Hier ist ein Beispiel:

bool replace(std::string& str, const std::string& from, const std::string& to) {
    size_t start_pos = str.find(from);
    if(start_pos == std::string::npos)
        return false;
    str.replace(start_pos, from.length(), to);
    return true;
}

std::string string("hello $name");
replace(string, "$name", "Somename");

ReplaceAll verwenden

Wenn Sie alle Vorkommen eines Teilstrings durch einen anderen Teilstring ersetzen müssen, können Sie eine Funktion namens replaceAll verwenden. Hier ist eine Beispielimplementierung von replaceAll:

void replaceAll(std::string& str, const std::string& from, const std::string& to) {
    if(from.empty())
        return;
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
    }
}

Sowohl „replace“ als auch „replaceAll“ sind effizient und einfach zu verwenden. Sie eignen sich zum Ersetzen von Teilzeichenfolgen innerhalb von Zeichenketten in einer Vielzahl von Anwendungen.

Das obige ist der detaillierte Inhalt vonWie kann man Teilstrings in C-Strings effizient ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn