Doppelte Leerzeichen For-Schleife-Problemmeldung
-
Nochmal zur Info: Das Leerzeichen zu entfernen fixt das Problem in deinem Fall aber nicht die Tatsache, dass das Programm fehlerhaft ist. Bau einfach ne Ueberpruefung ein, ob
i
nach dem zweiten Inkrement noch gueltig ist, oder lass es gleich nur in der For-Schleife von0
bissize() - 2
laufen (sprich< size() - 1
).
-
danke dir, warum entfernt das Programm jetzt aber nicht meine doppelten Leerzeichen? Irgendwie funktioniert es nicht mehr richtig
-
Kannst du mal bitte deinen aktuellen Code zeigen?
-
ich hab im Moment nur den oberen Code versucht ohne Leerzeichen im Textende und er funktioniert nicht. er stürzt jetzt zwar nicht ab, aber funktioniert auch nicht. Überprüfung bau ich dann ein, wenn ich weiß dass die Schleife überhaupt noch funktioniert
-
Warum benutzt du nicht einfach string.find()?
#include <string> #include <algorithm> #include <iostream> void removeMultipleSpaces(std::string& str) { auto pos = str.find(" "); while(pos != std::string::npos) { str.erase(pos, 1); pos = str.find(" "); } } int main() { std::string str = "Hallo, Welt! Das ist ein Test \n"; std::cout << str; removeMultipleSpaces(str); std::cout << str; }
-
das funktioniert nicht str
-
"Funktioniert nicht " ist keine Fehlerbeschreibung.
-
manni66 schrieb:
"Funktioniert nicht " ist keine Fehlerbeschreibung.
sorry er meldet: auto pos nicht gefunden
-
Mondblume schrieb:
manni66 schrieb:
"Funktioniert nicht " ist keine Fehlerbeschreibung.
sorry er meldet: auto pos nicht gefunden
Die Meldung ist aber auch nicht vollständig.
Vielleicht solltest du einen aktuellen Compiler verwenden oder ihm sagen, dass er nach dem aktuellen Standard ableiten soll.
Probiere std::size_t statt auto, das sollte auch ein veralteter Compiler verarbeiten.
-
Danke mit std::size_t geht es und danke auch an str.