Pergunta

Como faço para converter um CString a um double em C ++?

suporte a Unicode seria bom também.

Obrigado!

Foi útil?

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);

strtod (ou wcstod ) irá converter strings para um valor de precisão dupla.

(Requer <stdlib.h> ou <wchar.h>)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top