Как преобразовать CString в double в C++?

Как преобразовать CString до double в C++?

поддержка Unicode также была бы хорошей.

спасибо!

4 ответов


A CString можно использовать как LPCTSTR, что в основном является const char* (const wchar_t* в сборках Unicode).

зная это, вы можете использовать atof():

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

...или для сборки Unicode,_wtof():

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

...или для поддержки Unicode и не-Unicode строит...

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

(_tstof() макрос либо atof() или _wtof() в зависимости от того,_UNICODE is определено)


вы можете конвертировать что-нибудь С помощью std::stringstream. Единственное требование заключается в том, что операторы >> и << быть реализованы. Stringstreams можно найти в <sstream> заголовочный файл.

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

с библиотекой Boost lexical_cast, вы делаете

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

...

double d = lexical_cast<double>(thestring);

strtod (или wcstod) преобразует строки в значение двойной точности.

(требуется <stdlib.h> или <wchar.h>)