String auslesen und löschen
-
Ich hab einen String
Ich suche ein bestimmtes Zeichen "§"Beispiel String:
abcdefg§hijklmnop
Nun soll er alles was sich rechts vom § rechts befindet, löschen!
Also es soll dannabcdefg§
stehen
-
Schön.

-
Hallo,
schau dir mal folgende Methoden an:insert(), erase(), find(),replace()...
Alle haben sehr einfache Syntax und somit leicht zu erlernen. Dann ist dein Problem ein Kinderspiel!
lg, freakC++
-
Dobyasd schrieb:
Ich hab einen String
Ich suche ein bestimmtes Zeichen "§"Beispiel String:
abcdefg§hijklmnop
Nun soll er alles was sich rechts vom § rechts befindet, löschen!
Also es soll dannabcdefg§
stehen
http://www.cplusplus.com/reference/string/string/
Ein wahres Hexenwerk diese Referenz, man sollte einen Exorzist rufen !
-
Einfach ne Forschleife Hochzählen bis zum Auftreffen deines Zeichens
Falls gefunden Zählerschleife+1, ein \0 einfügen fertig. Löscht zwar dein Klammote nicht wirklich. Nur bei der Ausgabe wird es dich nicht mehr stören.Oder Forschleife
kopiere jedes Element einschliesslich dein § in ein array, fertig.
-
Cefour schrieb:
Einfach ne Forschleife Hochzählen bis zum Auftreffen deines Zeichens
Falls gefunden Zählerschleife+1, ein \0 einfügen fertig. Löscht zwar dein Klammote nicht wirklich. Nur bei der Ausgabe wird es dich nicht mehr stören.Glaubst du wirklich, das funktioniert?
std::string s = "abcdefg$hijklmnop"; for(int i = 0; i < s.size(); ++i) { if(s[i] == '$') { if(i + 1 < s.size()) { s[i + 1] = '\0'; } break; } } std::cout << s << std::endl;Ausgabe: abcdefg$ijklmnop
-
std::string s("asdfgh$asdfghklj");
s.erase(++ std::find(s.begin(), s.end(), '$'), s.end());bb
PS:
Ausgabe: abcdefg$ijklmnop
bestimmt mit gcc^^
msvc gibt mir das hier aus:
abcdefg$ ijklmnopweiß aber nicht, ob der standard was darüber schreibt, wie '\0' darzustellen ist
iwie ist ja beides logisch^^
-
@unskilled: Ich würde sicherheitshalber aber noch ein "if" dazwischenschieben, falls der String wider allen Erwartens doch kein '$' enthält. Sonst wird ja einfach alles gelöscht (bei npos==-1). Und ich bin mir auch nicht sicher, ob "++" hier funktioniert, müssten der Rückgabewert von "find" nicht ein R-Value sein?
-
Hey leute,
das mit der for-Schleife sehe ich als Schwachsinn hier an, denn man kann es sich mit den ganz normale Stringmethoden total einfach machen. So wie es unskilled gemacht hat!!lg, freakC++
-
Wobei das durch die string-Routinen intern sicher auch nicht viel anders als über eine Schleife funktioniert.
Der Code von Unskilled sieht natürlich einfach geiler aus
-
Badestrand schrieb:
@unskilled: Ich würde sicherheitshalber aber noch ein "if" dazwischenschieben, falls der String wider allen Erwartens doch kein '$' enthält. Sonst wird ja einfach alles gelöscht (bei npos==-1). Und ich bin mir auch nicht sicher, ob "++" hier funktioniert, müssten der Rückgabewert von "find" nicht ein R-Value sein?
Japp, das if würd ich eigtl auch reinmachen ^^
Dachte ich eigtl auch (R-Value) aber es geht - zumindest im MSVC ^^bb
-
unskilled schrieb:
Dachte ich eigtl auch (R-Value) aber es geht - zumindest im MSVC ^^
Heißt ja nicht unbedingt dass es auch immer gehen darf/sollte/muss
