Как преобразовать CString в double в С++?
Как преобразовать CString
в double
в С++?
Поддержка Юникода также будет приятной.
Спасибо!
Ответы
Ответ 1
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
)
Ответ 2
Вы можете конвертировать что угодно, используя std::stringstream
. Единственное требование - реализовать операторы >>
и <<
. Строковые потоки можно найти в заголовочном файле <sstream>
.
std::stringstream converter;
converter << myString;
converter >> myDouble;
Ответ 3
с библиотекой boost lexical_cast, вы делаете
#include <boost/lexical_cast.hpp>
using namespace boost;
...
double d = lexical_cast<double>(thestring);
Ответ 4
strtod (или wcstod) преобразует строки в значение двойной точности.
(Требуется <stdlib.h>
или <wchar.h>
)