Mehrere Leerzeichen ersetzen
-
Wie kann ich mehrere Leerzeichen durch ein einzelnes ersetzen.
Ich vermute mit hilfe eines char Arrays Vergleich, allerdings bin ich nicht gut genug
könnt ihr mir einen Tipp geben

-
Mehr Informationen, weniger Vermutungen!
Daher kann ich nur das grobe vorgehen erklären:
- Sequenz in einer Schleife durchlaufen
- Prüfen ob aktuelles Zeichen ein Leerzeichen ist, falls ja: merken
- Wenn nächstes Zeichen auch ein Leerzeichen ist: nächstes Zeichen aus Sequenz löschen
- Fortführen bis Ende der SequenzDas Löschen aus der Sequenz erfolgt im allgemeinsten Fall durch verschieben der nachfolgenden Zeichen nach vorne. Ist mehr über den zugrundeliegenden Typ der Sequenz bekannt, können bessere Verfahren existieren.
Alternativ kann auch eine neue Sequenz konstruiert werden, in die man dann alles außer mehrfache Leerzeichen kopiert.
Aber da alles nur Vermutung ist, kann ich es nicht konkreter beantworten.
-
Ich würde es vielleicht so machen:
std::string str("sdf sdfsdf sdf"); int pos; while(std::string::npos!=(pos=str.find(" "))) { str.erase(str.begin()+pos); }Solange 2 aufeinanderfolgende Leerzeichen gefunden werden, lösche das erste.
Geht vielleicht auch noch simpler, keine Ahnung...
-
Ich würde vermutlich irgend einen string tokenizer umfrickeln, wie den da http://oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html
-
std::unique_copy mit einem entsprechenden Prädikat macht was du willst:
bool both_spaces(char l, char r) { return l == ' ' && r == ' '; } int main() { std::string source("I have soooooo many spaces"); //std::string target; //std::unique_copy(source.begin(), source.end(), std::back_inserter(target), &both_spaces); source.erase(std::unique_copy(source.begin(), source.end(), source.begin(), &both_spaces), source.end()); //std::cout << target << '!' << std::endl; std::cout << source << '!' << std::endl; }
-
pumuckl schrieb:
std::unique_copy mit einem entsprechenden Prädikat macht was du willst:
Wozu über
std::unique_copy, wenn die Quelle und das Ziel gleich sind? Kannst ja gleichstd::uniquenehmen.
http://www.cplusplus.com/reference/algorithm/unique/Grüssli
-
Danke für euere Hilfe, ich dachte schon ich drehe hohl!!!
-
Dravere schrieb:
Wozu über
std::unique_copy, wenn die Quelle und das Ziel gleich sind? Kannst ja gleichstd::uniquenehmen.
http://www.cplusplus.com/reference/algorithm/unique/Ähm. Ja.
Wald...Bäume...
Gut dass ich bald WE hab...