Comment puis-je convertir un CString à un double en C ++?
-
06-09-2019 - |
Question
Comment puis-je convertir un CString
à un double
en C ++?
support Unicode serait bien aussi.
Merci!
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);