doubles aus String ziehen
-
Hallo!
Ich hab folgenden String (als Bsp):
((12.3,2,3.2,32))
und möchte die double-Werte kriegen.
Ich bin eigentlich mehr mehr Java zu Gange und habe unter C nun meine Probleme.
Der String ist ein char-Array.
In Java hätte ich einfach je die beiden klammern abgeschnitten, mit StringTokenizer bis zum Komma getrennt und in double umgewandelt - in C++ stehe ich aufm Schlauch.Habt ihr gute Tipps?
danke!
-
Bei char-Arrays kannst du ja strtok() verwenden, auch wenn ich lieber mit std::string arbeiten und die Einzelteile mit find() und substr() rausschneiden würde.
-
Auch wenns vielleicht bissl overkill fürs ertse ist: schau dir mal die Doku zu boost::spirit an, die haben genau deine Problem (komma-getrennte Liste von doubles) als Beispiel verwurstet.
-
Hallo!
Das Cstoll-Beispiel hhat schon gut geholfen. Verbleibt nur noch das Problem "((17.5" - so sieht dann nämlich der erste geschnittene Teil aus.
Gibt es sowas, wie substring in Java, dass ich nur ab der 3.Stelle den String nehmen kann?
-
Welches Beispiel jetzt? strtok() oder string::find()? Bei ersterem kannst du einfach "str+2" als Startposition übergeben, dann überspringst du die ersten beiden Zeichen.
-
strtok war gut.
...und wo gebe ich diese Startposition an? Beispiel?
Danke für die vielen Bemühungen!
-
Stefan2307 schrieb:
strtok war gut.
...und wo gebe ich diese Startposition an? Beispiel?
Danke für die vielen Bemühungen!Ah, schon klar... nochmal danke!
-
Stefan2307 schrieb:
strtok war gut.
...und wo gebe ich diese Startposition an? Beispiel?
Danke für die vielen Bemühungen!Der erste Parameter an strtok() gibt an, wo mit der Suche begonnen werden soll:
char input_data[] = "((12.3,2,3.2,32))"; char* ptr = strtok(input_data+2/*hier übergibst du die Startposition*/,","); while(ptr!=0) { //Umwandeln und Auswerten der Eingabe ptr=strtok(NULL,","); }