Was ist die bevorzugte Methode zum Entfernen von Leerzeichen aus einer Zeichenfolge in C ++? Ich könnte alle Zeichen durchlaufen und eine neue Zeichenfolge erstellen, aber gibt es einen besseren Weg?
Am besten verwenden Sie den Algorithmus remove_if
und den isspace:
remove_if(str.begin(), str.end(), isspace);
Jetzt kann der Algorithmus selbst den Container nicht mehr ändern (nur die Werte ändern), sodass die Werte tatsächlich gemischt werden und ein Zeiger darauf zurückgegeben wird, wo das Ende jetzt sein sollte. Wir müssen also string :: erase aufrufen, um die Länge des Containers tatsächlich zu ändern:
str.erase(remove_if(str.begin(), str.end(), isspace), str.end());
Wir sollten auch beachten, dass remove_if höchstens eine Kopie der Daten erstellt. Hier ist eine Beispielimplementierung:
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;
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen