How do I convert a CString to a double in C++?

后端 未结 4 840
被撕碎了的回忆
被撕碎了的回忆 2021-02-07 12:39

How do I convert a CString to a double in C++?

Unicode support would be nice also.

Thanks!

相关标签:
4条回答
  • 2021-02-07 13:12

    with the boost lexical_cast library, you do

    #include <boost/lexical_cast.hpp>
    using namespace boost;
    
    ...
    
    double d = lexical_cast<double>(thestring);
    
    0 讨论(0)
  • 2021-02-07 13:23

    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)

    0 讨论(0)
  • 2021-02-07 13:34

    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;
    
    0 讨论(0)
  • 2021-02-07 13:34

    strtod (or wcstod) will convert strings to a double-precision value.

    (Requires <stdlib.h> or <wchar.h>)

    0 讨论(0)
提交回复
热议问题