Interpuntionszeichen entfernen



  • Hallo Leute

    wie kann ich eingelesen Interpuntionszeichen entfernen..

    Danke im voraus.



  • Ich hab nicht ganz verstanden was du machen willst (source wäre hilfreich) und welche interpunktionszeichen willst du filtern ?

    ich schätz du meinst wenn du einen string hast der so aussieht

    char *c="abc@defg@hi@jklmn"
    

    soll danach in etwa so auschaune

    "abcdefghijklmn"
    

    Am besten du machs teine funktion wo du eine liste aller Interpunktions zeichen übergibst die du entfernen willst

    void Interpunktionszeichenentfernen(char * string, char *interpunktionszeichen){
    //pseudo code
    alle zeichen string mit interpunktzeichen vergleichen und gegebennfals entfernen
    //bei cstring gibt es glaub ich einen methode die das sowieso kann
    }
    

    mfg spjoe



  • spjoe schrieb:

    Ich hab nicht ganz verstanden was du machen willst (source wäre hilfreich) und welche interpunktionszeichen willst du filtern ?

    ich schätz du meinst wenn du einen string hast der so aussieht

    char *c="abc@defg@hi@jklmn"
    

    soll danach in etwa so auschaune

    "abcdefghijklmn"
    

    Am besten du machs teine funktion wo du eine liste aller Interpunktions zeichen übergibst die du entfernen willst
    [cpp]
    void Interpunktionszeichenentfernen(char * string, char *interpunktionszeichen){
    //pseudo code
    alle zeichen string mit interpunktzeichen vergleichen und gegebennfals entfernen
    //bei cstring gibt es glaub ich einen methode die das sowieso kann
    }

    mfg spjoe

    spjoe
    ganz genau das ist meine frage gewesen 🙂
    habe überall nach der funktion gesucht aber nicht gewunden.
    bräuchte die funktion der klasse <string>



  • für die klasse string gibt es keinen solche methode

    aber falsst du mfc verwendest include cstring.h
    wenn nicht atlstr.h

    CString str("abc@def@k")
    str.Remove('@')
    

    mfg spjoe



  • spjoe schrieb:

    für die klasse string gibt es keinen solche methode

    aber falsst du mfc verwendest include cstring.h
    wenn nicht atlstr.h

    CString str("abc@def@k")
    str.Remove('@')
    

    mfg spjoe

    nicht mit spatzen auf keulen werfen.

    wozu mfc einbinden, was kein standard mehr ist, wenn die standard bibliothek eine masse funktionalität für solche bereiche mitbringt?
    @spjoe kümmer dich mal um den c++ standard, und die methoden der klasse <string> aus dem iostream
    http://www.cppreference.com/cppstring.html

    @manuela ich denke, da findest du ein paar zum bauen deines vorhabens.



  • // zeichenEntfernen
    
    #include <iostream>
    
    using namespace std;
    
    string removeItem( string str, char item)
    {
    	str.erase( remove( str.begin(), str.end(), item), str.end());
    
    	return str;
    }
    
    int main( int argc, char* argv[])
    {
    	string str = "h,a,ll, o";
    
    	cout << str << endl;
    
    	cout << removeItem( str, ',') << endl;
    
    	return 0;
    }
    

    Das entfernt das Zeichen, was als "item" uebergeben wird. Wenn Du mehrere Zeichen entfernen willst, glaube ich bekommst Du es selbst hin, die Funktionalitaet zu erweitern 😉
    Ich habe selber nicht so viel Ahnung von C++, weiss aber, dass man "erease(remove" zB bei Vectoren (nach "effectiv STL"/item 32) hernimmt. Ich denke das es auch nicht zu unpraktisch fuer strings ist. Wichtig ist, remove ist etwas tricky und macht nicht unbedingt das was man eigentlich intuitiv erwarten wuerde. Deshalb benoetigt man erease. Es sollte fuer alle Datenstrukturen der STL funktionieren afaik ausser fuer list. Es ist ein fester Ausdruck mit erease und ein remove_if gibt es afaik nicht in der STL.

    ..hoffe es stimmt alles 🙂



  • Hab von anfang gemeint sie sollte selber einfunktion schreiben aber es scheint ihr aber zuviel arbeit zu sein.
    Ich halte nichts davon Code vor zuschreiben sonst hat das ganze keinen lern Effekt
    mfg spjoe



  • Corcovado schrieb:

    // zeichenEntfernen
    
    #include <iostream>
    
    using namespace std;
    
    string removeItem( string str, char item)
    {
    	str.erase( remove( str.begin(), str.end(), item), str.end());
    
    	return str;
    }
    
    int main( int argc, char* argv[])
    {
    	string str = "h,a,ll, o";
    
    	cout << str << endl;
    
    	cout << removeItem( str, ',') << endl;
    
    	return 0;
    }
    

    Das entfernt das Zeichen, was als "item" uebergeben wird. Wenn Du mehrere Zeichen entfernen willst, glaube ich bekommst Du es selbst hin, die Funktionalitaet zu erweitern 😉
    Ich habe selber nicht so viel Ahnung von C++, weiss aber, dass man "erease(remove" zB bei Vectoren (nach "effectiv STL"/item 32) hernimmt. Ich denke das es auch nicht zu unpraktisch fuer strings ist. Wichtig ist, remove ist etwas tricky und macht nicht unbedingt das was man eigentlich intuitiv erwarten wuerde. Deshalb benoetigt man erease. Es sollte fuer alle Datenstrukturen der STL funktionieren afaik ausser fuer list. Es ist ein fester Ausdruck mit erease und ein remove_if gibt es afaik nicht in der STL.

    ..hoffe es stimmt alles 🙂

    danke corcovado



  • elise schrieb:

    spjoe schrieb:

    für die klasse string gibt es keinen solche methode

    aber falsst du mfc verwendest include cstring.h
    wenn nicht atlstr.h

    CString str("abc@def@k")
    str.Remove('@')
    

    mfg spjoe

    nicht mit spatzen auf keulen werfen.

    wozu mfc einbinden, was kein standard mehr ist, wenn die standard bibliothek eine masse funktionalität für solche bereiche mitbringt?
    @spjoe kümmer dich mal um den c++ standard, und die methoden der klasse <string> aus dem iostream
    http://www.cppreference.com/cppstring.html

    @manuela ich denke, da findest du ein paar zum bauen deines vorhabens.

    danke elise für deine infos ....
    sehr hilfreich



  • spjoe schrieb:

    Hab von anfang gemeint sie sollte selber einfunktion schreiben aber es scheint ihr aber zuviel arbeit zu sein.
    Ich halte nichts davon Code vor zuschreiben sonst hat das ganze keinen lern Effekt
    mfg spjoe

    ertmal danke spjoe..

    aber habe nicht gesagt das ich die methode nicht selbst schreiben will
    sonder hatte dich gefragt ob es eine methode gibt die das macht, hatte es von einem freund gehört das es sowas geben würde

    aber es gibt sie nicht wie ich es erfahren habe

    also werde ich es jetzt selbst schreibn 😃


Anmelden zum Antworten