leerzeichen im string löschen



  • Also ich weis nich ob ich falsch suche aber das einzige was ich
    gefunden habe ist:

    string s = " 12.345";
    s.replace(" ","");
    

    nur leider klapt das nich so wie ich es gern hätte 😉
    also dann hab ich nach string replace gesucht aber ich werd
    nich draus schlau, da ich da jedesmal auch index angeben muss
    und iteratoren wo er starten bzw. endet. aber wenn ich das
    mache gibts wie immer fehler.

    was ich also suche is alle leerzeichen aus einem string zu entfernen.



  • string::replace() ist nur dafür gedacht, einen (per Index gegebenen) Teilstring zu ersetzen. Um alle Vorkommen eines Substrings zu ersetzen, mußt du das in einer Schleife mit find() kombinieren (in meinem Magazin-Artikel "Stringverarbeitung in C++" findest du ein Beipiel dazu).



  • Mir fällt da noch Stringstream ein:

    #include <string>
    #include <sstream>
    #include <iostream>
    using namespace std;
    
    int main( int argc, char* argv[] )
    {
    	string s1 = " 12.456   ";
    	stringstream ss;
    	ss << s1;
    	string s2;
    	ss >> s2;
    
    	cout << s2.c_str();
    	cin.get();
    	return EXIT_SUCCESS;
    }
    


  • ok danke euch beiden.
    benutze eh stringstreams also is das garnich mal so
    unnütz 😉



  • s.erase(std::remove(s.begin(), s.end(), ' '), s.end());
    

    geht auch ...

    remove() entfernt die Zeichen nur durch "Vorziehen" ... die Länge von s bleibt unverändert. Deswegen muss man anschließend noch "erasen" (remove() gibt glücklicherweise einen iterator auf das erste "ungewollte Zeichen" zurück).

    Gruß,

    Simon2.


Anmelden zum Antworten