[c++] sscanf benutzt falsches trennzeichen für Nachkommastellen

breznfresser

Grünschnabel
Servus mitteinand,

nachdem ich mittlerweile lang genug probiert und nachgeforscht habe sehe ich keine andere Möglichkeit mehr als mein Problem hier loszuwerden. Ich hoffe Ihr könnt mir helfen.

Möchte daten (zahlenwerte) aus einem Textfile extrahieren und bin dabei auf die eigentlich ganz gute funktion sscanf gestossen, die bei mir allerdings Probleme zu machen scheint.

mein Code ist folgender:
Code:
double x , y ;
cout << line << endl;
sscanf ( line, "; %lg %*c %lg %*s" ,  &x , &y )
cout  << x << " (x) " << y << " (y) << endl;

line wurde vorher als
Code:
char line[200]
definiert und kriegt von mir einen wert zugewiesen.
Der Knackpunkt ist nun folgender ( als Beispiel meine Ausgaben):
;545,185.625,0,90,0,0;542.5,288.75,0,90,0,0;
545.185 (x) 625 (y)

Leider interpretiert (wie zu sehen) sscanf bei mir das Komma als Trennzeichen für Nachkommastellen und nicht den Punkt. Der Punkt hingegen wir dann als Trennzeichen (%*c) der Zahlen erkannt.
Wie kann ich nun sscanf den Punkt als Trennzeichen für Nackommastellen beibringen?

Schöne Grüße, Christian

(benutze dafür den gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2) )
 
O.K., hab die Umgehnung des Problems gefunden:

Wenn man die ganze Zeile als einen Stringstream einliest kommt man mit

Code:
        double x , y;
        zeichen = datagram.get();
        datagram >>  x;
        zeichen = datagram.get();
        datagram >>  y;

zum selben Ziel. Die ausgabe wird automatisch in den Typ umgewandelt und dabei diesmal richtig erkannt. :-)
 
Zurück