Leerzeichen aus einem String entfernen
-
Hi!
Ich habe das Problem, dass ich es nicht gebacken bekomme die Leerzeichen aus einem String wie "Heute war ein schöner Tag" zu entfernen, sodass es heißt "HeutewareinschönerTag".
Mein bisheriger Versuch schaut so aus:#include <iostream> #include <string> #include <cctype> using namespace std; int main() { string wort; cin >> wort; for(int i = 0; i<=wort.length()-1; i++) { if(isspace(wort[i])) wort.erase(i, 1); } cout << wort; return 0; }
Aber das gibt mir in minem Fall nur "Heute" aus? Wo liegt mein Fehler?
euer,
Kapador
-
string bla("Heute ist ein regnerischer Tag."); string::iterator it = bla.begin(); for(;it != bla.end(); ++it) { if(*it == ' ') it = string.erase(it); }
-
Kapador schrieb:
Wo liegt mein Fehler?
Bereits bei der Eingabe. cin >> wort liest nur bis zum ersten White-Space.
Was du brauchst ist ein:
getline(cin, wort);Dann solltest du aber der Variablen wort einen passenderen Namen geben. Z.B. Satz.
-
Nagut, mein Name ist auch nicht passend...
-
std::string::iterator it = std::remove(str.begin(),str.end(),' '); str.erase(it,str.end());
-
Hi!
Vielen Dank!
Man bin ich dumm - dass mit dem cin hab' ich total vergessen!Jetzt wollte ich nur noch mal fragen, warum man bei getline immer zweimal die "Enter"-Taste drücken muss, ob die Eingabe zu bestätigen?
-
Ist ein Bug der MSVC-Standard-Library, kannst du mit dem STLFix auf HumeSikkins Page (http://bens.c-plusplus.info) beheben.
MfG SideWinder
-
Mis2com schrieb:
string bla("Heute ist ein regnerischer Tag."); string::iterator it = bla.begin(); for(;it != bla.end(); ++it) { if(*it == ' ') it = string.erase(it); }
Davon abgesehen, dass das nicht gerade effizient ist, werden doppelte Leerzeichen übersprungen...
-
Ok, aber was macht std::remove?
-
Mis2com schrieb:
Ok, aber was macht std::remove?
std::remove faßt nicht passende Elemente am Anfang zusammen und gibt den iterator für das Ende dieser Sequenz zurück.