Как преобразовать CString в двойное значение в C++?
-
06-09-2019 - |
Вопрос
Как мне преобразовать 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);