Como faço para converter um CString para um double em C ++?
-
06-09-2019 - |
Pergunta
Como faço para converter um CString
a um double
em C ++?
suporte a Unicode seria bom também.
Obrigado!
Solução
Um CString
podem converter a um LPCTSTR
, que é basicamente uma const char*
(const wchar_t*
em Unicode cria).
Sabendo disso, você pode usar atof()
:
CString thestring("13.37");
double d = atof(thestring).
... ou para Unicode constrói, _wtof()
:
CString thestring(L"13.37");
double d = _wtof(thestring).
... ou para apoiar tanto Unicode e não-Unicode constrói ...
CString thestring(_T("13.37"));
double d = _tstof(thestring).
(_tstof()
é uma macro que se expande para qualquer atof()
ou _wtof()
com base em se ou não _UNICODE
é definido)
Outras dicas
Você pode converter qualquer coisa a qualquer coisa usando um std::stringstream
. A única exigência é que o >>
operadores e <<
ser implementado. Stringstreams podem ser encontrados no arquivo de cabeçalho <sstream>
.
std::stringstream converter;
converter << myString;
converter >> myDouble;
com o impulso lexical_cast biblioteca, você
#include <boost/lexical_cast.hpp>
using namespace boost;
...
double d = lexical_cast<double>(thestring);