String trennen
-
HI!
Wenn ich eine char * Zeichenkette habe, angenommen
char * zk = "Hallo|und|tschuess";und ich will jetzt "Hallo", "und" sowie "tschuess"
in einzelne Variabeln laden, wie kann ich dass machen?Unter Windows (mit Borland) hab ich sowas schonmal hinbekommen
allerdings unter benutzung der vcl/clx.(URL: http://www.c-plusplus.net/forum/viewtopic.php?t=65067)
Jetzt muss ich was unter linux machen und dass sollte halt im
ANSI/ISO standart sein.Danke für eure Hilfe.
MFG Frey
-
-
Ja, und was spricht gegen strtok? Ich würde auch lieber strings benutzen, das ist viel einfach, weniger fehleranfälliger und auch Standard.
-
OK!
Hab mich jetzt mal heute Mittag ran gesetztk und gebrütet,
und habs hinbekommen meine solution sieht folgendermassen aus:#include <stdlib.h> #include <iostream> #include <string> std::string explode(char trennzeichen, std::string str, int part) { std::string output; if (part == 0) // Wenn der erste Part gesucht wird // müssen viele komplizuierte schritte nicht gemacht werden { string::size_type pos1 = str.find_first_of(trennzeichen); output = str.substr(0,pos1); } else { /* Als erstes muss die Anzahl der Trennzeichen in dem zu Teilendem String festgestellt werden, dies geschieht in einer Schleife, und wenn die Anzahl (int i) mit (int) part (-1) übereinstimmt wird die Postition ausfindig gemacht. */ int s_lengh = strlen(str.c_str()); int match_c = 0; for (int i=0;i<s_lengh;i++) { if (str[i] == trennzeichen) { match_c++; if (match_c == part) { std::string str_2 = str.substr(i+1, 1000); string::size_type pos2 = str_2.find_first_of(trennzeichen); output = str_2.substr(0,pos2); } } } } return output; }
-
Sorry hab vergessen zu schreiben wie mans dann verwendet.
Das sieht folgendermaßen aus:
char * str = "Hallo|tschau"; std::string var_1 = explode('|',str,0); // gibt "Hallo" zurück std::string var_2 = explode('|',str,1); // gibt "tschau" zurück