"wcstod" oder "wchar_t in double umwnadeln"
-
Hallo,
ich hoffe, daß wurde nicht schon hundertmal gefragt, aber mit der Hilfe hab ich nichts gefunden...Fange gerade mit C an, kann also sein, daß es ne ziemlich blöde frage ist:
Also, ich zerlege ein wchar_t* ('wcsDataString') mit wcstok und möchte die Einzelteile in doubles konvertieren, aber bekomme irgendwie rätselhafte Ergebnisse...
wchar_t* sTokenized; const wchar_t* sDelimiter = (wchar_t*)"|"; wchar_t* stop; for ( sTokenized = wcstok(wcsDataString, sDelimiter); sTokenized != NULL; sTokenized = wcstok(NULL, sDelimiter) ) { mi_info( "*****posread: %ls", sTokenized); mi_info( "*****pos: %d", wcstod(sTokenized, &stop)) }
In der Ausgabe bekomme ich dann so etwas:
*****posread: -11.9351
*****pos: 1834810029
*****posread: -12.034
*****pos: 1924145349
*****posread: -6.3565
*****pos: 1443109011
*****posread: 15.5102
*****pos: -281749855
*****posread: 4.0417
*****pos: 1738602761
*****posread: -8.3329
*****pos: -563499709
*****posread: -7.7997
*****pos: -1903529506
*****posread: 0
*****pos: 0
*****posread: -20.3302
*****pos: -54975581die 'posread' passen (sind also genau das , was ich haben möchte) nur die 'pos' stimmen nicht. Jemand ne Idee, woran das liegen könnte?
Danke schonmal im Voraus...
Philipp
-
wcstok scheint wie gesagt echt OK zu sein
Problem liegt doch bei wcstod, oder? (bzw. das Problem sitzt mal wieder vorm Bildschirm...
)
ich habe auch versucht, 'errno' abzufragen, aber 'wcstod' scheint auch keinen Fehler zu werfen...
die docs sagen auch noch etwas von LC_NUMERIC (so wie ich verstanden habe, um anzugeben, mit welchem Zeichen die Nachkommastellen getrennt werden) obwohl defaultmäßig schon ein Punkt gilt. Könnte es daran liegen? Dann muß ich mir nochmal angucken, wie man LC_NUMERIC setzt...
Also, falls jemand mir nen Hinweis geben kann, wäre ich echt sehr dankbar ( werde mich ab jetzt auch mit nem Buch hinsetzen, um von der Pike auf C zu lernen, ist halt grad ne konkrete Aufgabe, die noch schnell durch müßte... )
Gruß
Philipp
-
Och bitte... ich komm nicht drauf...