Wie alle Leerzeichen aus einem String entfernen ?



  • Servs zusammen,

    schade das die BoardSuche nicht funktioniert, so würde ich euch nicht mit meiner Frage belästigen - bin mir sogar sicher das es schon mal hier aufgetaucht ist.
    Aber es ist nun mal so:

    Ich habe einen String und möchte nun diesen nur auf Buchstaben beschränken. Das heisst es darf alles eingetippt werden auch Satzzeichen, die sollen dann aber durch eine Funktion rausgelöscht werden, genauso wie Leerzeichen.
    Ich hab mir die string.replace Funktion mal angeschaut, aber irgendwie steig ich da nicht durch wann er wieviele Argumente von mir haben will.
    Die Suche im I-net hat mich seit ner Stunder leider auch nicht weiter gebracht, ihr seid nun meine letzte Instanz.

    Über Hilfe bzw. eine Wegweisung würde ich mich freuen 😉

    Xecutor



  • Erst mit string::find nach den Zeichen suchen und den Rückgabewert dann an string::erase übergeben.
    Oder mit einem Iterator durchwandern und dann jeweils die Zeichen löschen.

    mfg



  • #include <string>
    #include <algorithm>
    
    // Filtert nach Buchstaben
    struct AllowOnlyCharacters
    {
    	bool operator()(char c) const
    	{
    		// return !isalpha(c);
    		if(c == ' ' || c == '.')
    			return true;
    		else
    			return false;
    	}
    };
    
    string str;
    
    // Zuerst alle Leerzeichen, etc. an das Ende des Strings verschieben
    string::iterator new_last = remove_if(str.begin(), str.end(), AllowOnlyCharacters());
    
    // str.begin() bis new_last enthält alle restlichen Zeichen
    // new_last bis str.end() enthält nur noch unerwünschte Zeichen
    
    // Diese jetzt aus dem String entfernen
    str.erase(new_last, str.end());
    


  • Danke euch für die Antworten 😉

    Also kann ich es nur auf Umwegen lösen, dachte das es sowas gleichwertiges gibt wie in Java [ string.replaceAll("[^a-zA-Z]", "") ]. Aber gut ich denke ich werd damit klarkommen, ansonsten meld ich mich wieder.

    Thx nochmal - Xecutor


Anmelden zum Antworten