strings: Zeichen am Anfang/Ende zusammenfassen
-
Hallo,
...
am besten ich geb mal ein Beispiel
string s = "Das hier ist ein Text.";jetzt sind also ein paar Zeichen im String.
Wie stelle ich es an, dass zum Beispiel alle 'i's am Ende zusammengefasst werden bzw. an das Ende verschoben werden?string s = "Das hier ist ein Text." // Alle 'i's ans Ende setzen cout << s << endl; // Soll "Das her st en Text.iii" ausgeben
-
#include <iostream> #include <string> #include <algorithm> int main() { std::string s = "das hier ist ein text."; std::string::value_type c = 'i'; std::string::iterator it = std::remove(s.begin(), s.end(), c); std::fill(it, s.end(), c); std::cout << s << std::endl; }Edit: Das hier ist das falsche Forum: korrekt wäre C++.
-
super
dankeund wie stelle ich es an, dass die 'i's am Anfang erscheinen?
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das scheint mir eher ein Fall für
std::partition()oder hier besserstd::stable_partition()zu sein. Mehr dazu...// Prädikat bool IsI(char Ch) { return Ch == 'i'; } int main() { std::string Str = "Das hier ist ein Text."; std::stable_partition(Str.begin(), Str.end(), IsI); }Je nach Anwendung die Prädikatsfunktion anpassen, zum Beispiel mit
operator!=.
-
Ob es schöner aussieht oder nicht, naja, aber zur Vollständigkeit:
#include <string> #include <iostream> #include <algorithm> #include <functional> int main() { std::string str = "Das hier ist ein Text."; std::stable_partition( str.begin(), str.end(), std::bind1st(std::equal_to<char>(), 'i')); std::cout << str << std::endl; return 0; }Also die zusätzliche Funktion/Funktor ist nicht unbedingt nötig. Über
<functional>kann man den Funktor bauen.Grüssli
-
danke
supi *freu*