" aus einem String entfernen



  • Hallo zusammen,

    ich bin neu hier und habe gleich ein Problem.

    Wie kann ich aus einem String

    ;"T-SLIP ""SLOGGI TAI""ZABB/FA, NATURELL, 42";

    alle Hochkomme zwischen den Semikolons entfernen? Es müssen alle Hochkomma weg.

    Danke schon mal im Voraus.

    Rüdiger



  • CString s="dies \" ist ein \" test";
    	int i=0;
    	MessageBox(s);
    	while((i=s.FindOneOf("\""))>=0) {
    		s.Delete(i,1);
    	}
    	MessageBox(s);
    

    P.S.: Dat heißt Hochkommata! 😉


  • Mod

    Wie wäre es mit

    CString s="dies \" ist ein \" test";
    s.Remove(_T('\"');
    

    ?



  • Sorry,

    habe den Beitrag in die falsche Rubrik gestellt. Ich arbeite nicht mit MFC, also auch kein "CString".

    Geht das auch mit normalem C++? (char s[])

    Gruß
    Rüdiger



  • std::remove_copy(_if)
    oder
    std::remove(_if)

    oder gleich std::string verwenden.


  • Mod

    Das ist doch einfachstes C, oder?

    void RemoveChar(TCHAR *str, TCHAR c)
    {
    	int iFrom=0, iTo=0;
    	while (str[iTo]=str[iFrom])
    	{
    		if (str[iFrom]!=c)
    			++iTo;
    		++iFrom;
    	}
    }
    


  • Martin Richter schrieb:

    Das ist doch einfachstes C, oder?

    void RemoveChar(TCHAR *str, TCHAR c)
    {
    	int iFrom=0, iTo=0;
    	while (str[iTo]=str[iFrom])
    	{
    		if (str[iFrom]!=c)
    			++iTo;
    		++iFrom;
    	}
    }
    

    Man kann das auch sicher noch verkorkster und unleserlicher schreiben, gib dir mal etwas mehr Mühe. Mal sehen...

    void RemoveChar(TCHAR *str, TCHAR c)
    {
        for (size_t s = 0, d = 0; str[d] = str[s]; s++, d += str[s] != c);
    }
    

  • Mod

    @hustbaer: Findest Du den Code verkorkst oder habe ich einen Smiley übersehen?
    Wenn ja würde mich mal interessieren was daran das Problem ist?



  • Du hast nix übersehen, ich hab nur vergessen einen hinzumachen 😉

    War überspitzt formuliert, allerdings finde ich den Schleifenkopf schon etwas unschön/schwer lesbar. Ist für mich immer schwieriger zu lesen wenn zwei ganz unterschiedliche Sachen (Kopieren und Testen) in der selben "Anweisung" gemacht werden.

    Andrerseits ist das Hantieren mit rohen Arrays sowieso immer unschön.


Log in to reply