Question

Comment puis-je convertir un CString à un double en C ++?

support Unicode serait bien aussi.

Merci!

Était-ce utile?

La solution

A CString peut convertir en un LPCTSTR, qui est essentiellement un const char* (const wchar_t* en Unicode construit).

Sachant cela, vous pouvez utiliser atof() :

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

... ou Unicode construit, _wtof() :

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

... ou pour soutenir à la fois Unicode et non Unicode ... construit

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

(_tstof() est une macro qui se développe soit atof() ou _wtof() sur la base de si oui ou non _UNICODE est défini)

Autres conseils

Vous pouvez convertir rien à quoi que ce soit à l'aide d'un std::stringstream. La seule exigence est que les opérateurs >> et << être mis en œuvre. Stringstreams se trouvent dans le fichier d'en-tête de <sstream>.

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

avec le coup de pouce lexical_cast bibliothèque, vous faites

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

...

double d = lexical_cast<double>(thestring);

strtod (ou wcstod ) vous permet de convertir les chaînes à une valeur double précision.

(Nécessite <stdlib.h> ou <wchar.h>)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top