How do I convert a CString
to a double
in C++?
Unicode support would be nice also.
Thanks!
with the boost lexical_cast library, you do
#include <boost/lexical_cast.hpp>
using namespace boost;
...
double d = lexical_cast<double>(thestring);
A CString
can convert to an LPCTSTR
, which is basically a const char*
(const wchar_t*
in Unicode builds).
Knowing this, you can use atof():
CString thestring("13.37");
double d = atof(thestring).
...or for Unicode builds, _wtof():
CString thestring(L"13.37");
double d = _wtof(thestring).
...or to support both Unicode and non-Unicode builds...
CString thestring(_T("13.37"));
double d = _tstof(thestring).
(_tstof()
is a macro that expands to either atof()
or _wtof()
based on whether or not _UNICODE
is defined)
You can convert anything to anything using a std::stringstream
. The only requirement is that the operators >>
and <<
be implemented. Stringstreams can be found in the <sstream>
header file.
std::stringstream converter;
converter << myString;
converter >> myDouble;
strtod (or wcstod) will convert strings to a double-precision value.
(Requires <stdlib.h>
or <wchar.h>
)