Как мне преобразовать CString в double в C ++? - PullRequest
12 голосов
/ 27 мая 2009

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

Было бы неплохо также поддерживать Unicode.

Спасибо!

Ответы [ 4 ]

27 голосов
/ 27 мая 2009

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 или нет)

5 голосов
/ 30 мая 2009

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

std::stringstream converter;
converter << myString;
converter >> myDouble;
4 голосов
/ 28 мая 2009

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

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

...

double d = lexical_cast<double>(thestring);
1 голос
/ 27 мая 2009

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

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

...