String zerlegen



  • Guten morgen!!

    Ich habe folgendes Problem!!

    Ich habe einen String der folgendermaßen aussieht:

    4209-32952-26840-26039-26840-25219-18289-29044-17453-9757-32371...etc.

    Nun will ich ein String-Array erzeugen, welches die einzelnen Zahlenblöcke speichert. Das Array habe ich mit CString *strArray = new CString[Anzahl der Blöcke] erzeugt. Nun meine Frage: Wie bekomme ich die Zahlenblöcke in das Feld??? Am Ende sollte z.B. strArray[0] = "4209", strArray[1] = "32952" etc. beinhalten.

    Ich hoffe, mir kann hier jemand helfen!! Ich wäre über einen Algorithmus sehr dankbar!!

    mfg Pascal



  • wenn Du es zuFuß machen willst ?
    Wie wärs mit

    arraypointer = 0;
    stringpointer = 0;
    von stringpointer = 0  bis länge String{
       wenn aktueller substring = Minuszeichen, erhöhe arraypointer
       ansonsten hänge substring in array-nummer arraypointer
    

    oder :

    start = 0; teil = 0;
    teil = erstes vorkommen von "-" im String
    teil = 0 -> dann substr anhängen und ende 
    schreibe substring ins array und erhöhe dessen zeiger
    start = teil +1 
    und weiter suchen
    

    mal sio ganz grob gedacht



  • Hi,

    was ist CString? Kenn ich net, gibbet net unter Standard C++ 😉

    Du sagst, dass dieser String als ein "String Array" vorliegt. Wenn es sich
    um ein char * handelt, schau dir mal 'strtok' an, der Algorithmus sollte dann
    wirklich kein Problem mehr darstellen.

    Ich kenne CString nicht (hoert sich irgendwie nach MFC an), aber wie ich bei
    std::string vorgehen wuerde:

    1. Positionsvariable auf 0 setzen
    2. Suche '-'
    3. Bilde Substring von Positionsvariable bis Position von 2)
    4. Wandle Zahlenstring mittels stringstream in Zahl um und speichere in Array
    5. Mache bei 2) weiter, solange Positionsvariable von 2) != std::string::npos

    Wenn ich jetzt keinen Denkfehler drinne habe, solltest du damit erfolg haben.

    Wie gesagt, wie man es mit CString macht, weiss ich nicht.

    mfg
    v R



  • ...na wenn ich dieses Thema ins MFC-Forum setze, anwortet ja keiner. Da hab ichs halt hier rein gesetzt!! Ich probiere mal diese Lösungsvorschläge. Wenns nicht klappt, melde ich mich nochmal.

    mfg Pascal



  • Schleife Array mit Funktion auslesen.

    String Separator(String *Text,char Separator,int Pos)
    {
       char *p=strtok(Text->c_str(),&Separator);
       while(Pos---1)p=strtok(NULL,&Separator);
       return p;
    }
    

Log in to reply