Подтвердить что ты не робот

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

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

Поддержка Юникода также будет приятной.

Спасибо!

4b9b3361

Ответ 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>)