Frage

Wie kann ich eine CString zu einem double in C ++ konvertieren?

Unicode-Unterstützung wäre auch schön.

Danke!

War es hilfreich?

Lösung

kann ein CString auf ein LPCTSTR wandeln, die im Grunde ein const char* ist (const wchar_t* in Unicode aufbaut).

Mit diesem Wissen können Sie verwenden, atof() :

CString thestring("13.37");
double d = atof(thestring).

... oder für Unicode-Versionen, _wtof() :

CString thestring(L"13.37");
double d = _wtof(thestring).

... oder unterstützen sowohl Unicode und Nicht-Unicode-Versionen ...

CString thestring(_T("13.37"));
double d = _tstof(thestring).

(_tstof() ist ein Makro, das entweder atof() oder _wtof() erweitert basierend darauf, ob oder nicht _UNICODE definiert ist)

Andere Tipps

Sie können konvertieren etwas zu etwas ein std::stringstream verwenden. Die einzige Voraussetzung ist, dass die Betreiber >> und << umgesetzt werden. Stringstreams kann in der <sstream> Header-Datei gefunden werden.

std::stringstream converter;
converter << myString;
converter >> myDouble;

mit der Boost-lexical_cast Bibliothek, die Sie tun

#include <boost/lexical_cast.hpp>
using namespace boost;

...

double d = lexical_cast<double>(thestring);

strtod (oder wcstod ) konvertieren Strings auf einen Wert mit doppelter Genauigkeit.

(Benötigt <stdlib.h> oder <wchar.h>)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top