Float in CString und CString in Float
-
Weiss jemand wie ich das in die beiden Richtungen konvertieren kann? Am besten mit _fcvt (aber das funzt bei mir nicht)
-
Float nach CString:
CString tmp; float f = 10.5f; tmp.Format("%.1f", f); // Je nach Genauigkeit noch anpassen; wie in C mit printfVon CString nach float ganz einfach mit C-Funktionen:
CString tmp = "10.5"; float f = (float)(atof(f));Ansonsten guck mal in die FAQ nach:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-285350.html
Von einem std::string zu einem CString kannst du anschließend wie folgt kopieren:std::string str = "Text"; CString cStr = str.c_str()
-
CString tmp = "10.5";
float f = (float)(atof(f));versteh ich nicht... hier wird doch gar nicht tmp mit einbezogen.
-
Ein bischen Mitdenken würde es aber auch tun.

An atof muss natürlich tmp übergeben werden:CString tmp = "10.5"; float f = static_cast<float>(atof(tmp));CString hat operator() überladen für die Konvertierung in einen char-Pointer, daher sollte das ohne Probleme aufzurufen sein.
-
na das war mir schon klar -> aber auf dem pocket PC gibts hier n anderes problem. da kann man nicht einfach ein WideChar als Multibyte als Parameter übergeben. Das muss erst konvertiert werden... gibts ne einfachere lösung?
s1 = L"1.34"; float x; char *s; int len = wcslen(s1); s = new char[len+1]; // länge s+1 WideCharToMultiByte(CP_ACP, WC_DEFAULTCHAR, s1, -1, s, len, NULL, NULL); s[len]=0; x = (float)atof(s);Wieso kommt als x immer nur 0.00 raus? Was mach ich falsch?