Leerzeichen aus String in C++ entfernen
-
Verwenden Sie die Redewendung
Löschen-Entfernen
, um Leerzeichen aus Zeichenketten in C++ zu entfernen - Verwenden einer benutzerdefinierten Funktion zum Entfernen von Leerzeichen aus einer Zeichenkette in C++
Dieser Artikel zeigt verschiedene Methoden zum Entfernen von Leerzeichen aus einer Zeichenkette in C++.
Verwenden Sie die Redewendung Löschen-Entfernen
, um Leerzeichen aus Zeichenketten in C++ zu entfernen
Eine der nützlichsten Methoden zur Bereichsmanipulation in C++ ist das Lösch-Entfernen-Idiom, das aus zwei Funktionen besteht: std::erase
(integrierte Funktion für die meisten STL-Container) und std::remove
(Teil der STL-Algorithmusbibliothek). Beachten Sie, dass beide verkettet sind, um den Entfernungsvorgang für das angegebene Objekt durchzuführen. Die Funktion std::remove
benötigt zwei Iteratoren, um den Bereich anzugeben, und das dritte Argument, um den zu entfernenden Wert des Elements anzugeben. In diesem Fall geben wir direkt ein Leerzeichen an, aber jedes Zeichen kann angegeben werden, um alle seine Vorkommen in der Zeichenkette zu entfernen.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string str = " Arbitrary str ing with lots of spaces to be removed .";
cout << str << endl;
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
cout << str << endl;
return EXIT_SUCCESS;
}
Ausgabe:
Arbitrary str ing with lots of spaces to be removed .
Arbitrarystringwithlotsofspacestoberemoved.
Andererseits kann der Benutzer auch ein unäres Prädikat als drittes Argument an den Algorithmus std::remove
übergeben. Das Prädikat sollte für jedes Element den Wert bool
ergeben. Wenn das Ergebnis true
ist, werden die entsprechenden Werte aus dem Bereich entfernt. Daher können wir eine vordefinierte isspace
-Funktion verwenden, die nach mehreren Leerzeichen wie Leerzeichen - " "
, Zeilenumbruch - \n
, horizontaler Registerkarte - \t
und mehreren anderen sucht.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string str = " Arbitrary str ing with lots of spaces to be removed .";
cout << str << endl;
str.erase(std::remove_if(str.begin(), str.end(), isspace), str.end());
cout << str << endl;
return EXIT_SUCCESS;
}
Ausgabe:
Arbitrary str ing with lots of spaces to be removed .
Arbitrarystringwithlotsofspacestoberemoved.
Verwenden einer benutzerdefinierten Funktion zum Entfernen von Leerzeichen aus einer Zeichenkette in C++
Beachten Sie, dass alle vorherigen Lösungen das ursprüngliche Zeichenkettenobjekt geändert haben. Manchmal muss jedoch eine neue Zeichenkette erstellt werden, bei der alle Leerzeichen entfernt werden. Wir können eine benutzerdefinierte Funktion mit demselben Idiom Löschen-Entfernen
implementieren, das die Zeichenkettenreferenz verwendet und einen analysierten Wert zurückgibt, der in einem separaten Zeichenkettenobjekt gespeichert werden soll. Diese Methode kann auch geändert werden, um einen anderen Funktionsparameter zu unterstützen, der das zu entfernende Zeichen angibt.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
string removeSpaces(const string& s) {
string tmp(s);
tmp.erase(std::remove(tmp.begin(), tmp.end(), ' '), tmp.end());
return tmp;
}
int main() {
string str = " Arbitrary str ing with lots of spaces to be removed .";
cout << str << endl;
string newstr = removeSpaces(str);
cout << newstr << endl;
return EXIT_SUCCESS;
}
Ausgabe:
Arbitrary str ing with lots of spaces to be removed .
Arbitrarystringwithlotsofspacestoberemoved.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++