Вопрос

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

Поддержка Unicode тоже была бы не лишней.

Спасибо!

Это было полезно?

Решение

А 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, так и без него...

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

(_tstof() это макрос, который расширяется до любого atof() или _wtof() в зависимости от того, есть или нет _UNICODE определено)

Другие советы

Вы можете конвертировать что угодно к чему угодно используя std::stringstream.Единственное требование состоит в том, чтобы операторы >> и << быть реализовано.Строковые потоки можно найти в <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);

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top