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 mitarraypointer = 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:- Positionsvariable auf 0 setzen
- Suche '-'
- Bilde Substring von Positionsvariable bis Position von 2)
- Wandle Zahlenstring mittels stringstream in Zahl um und speichere in Array
- 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; }