Effizientes Entfernen von Leerzeichen aus C-Strings
Das Entfernen von Leerzeichen aus C-Strings ist eine häufige Aufgabe bei der String-Manipulation. Es ist zwar möglich, Zeichen manuell zu durchlaufen, es gibt jedoch einen effizienteren Ansatz.
Die bevorzugte Methode umfasst den leistungsstarken Standardbibliotheksalgorithmus „remove_if“ und das isspace-Prädikat. Remove_if entfernt Elemente aus einer Sequenz basierend auf einer angegebenen Bedingung, während isspace nach Leerzeichen sucht.
Um dies zu nutzen, können Sie Folgendes aufrufen:
remove_if(str.begin(), str.end(), isspace);
Dieser Vorgang allein ändert nichts Die Länge des Strings wird jedoch nicht geändert, die Elemente werden jedoch entsprechend neu angeordnet. Um die Länge anzupassen, verwenden wir string::erase:
str.erase(remove_if(str.begin(), str.end(), isspace), str.end());
remove_if vermeidet mehrere Kopien von Daten und macht es dadurch äußerst effizient. Hier ist eine vereinfachte Implementierung:
template<typename T, typename P> T remove_if(T beg, T end, P pred) { T dest = beg; for (T itr = beg;itr != end; ++itr) if (!pred(*itr)) *(dest++) = *itr; return dest; }
Das obige ist der detaillierte Inhalt vonWie kann ich Leerzeichen effizient aus C-Strings entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!