How do I convert a CString to a double in C++?
Unicode support would be nice also.
Thanks!
54 Answers
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; 3with the boost lexical_cast library, you do
#include <boost/lexical_cast.hpp> using namespace boost; ... double d = lexical_cast<double>(thestring); strtod (or wcstod) will convert strings to a double-precision value.
(Requires <stdlib.h> or <wchar.h>)