Pregunta

¿Cómo convierto un CString a un double en C ++?

El soporte Unicode sería bueno también.

Gracias!

¿Fue útil?

Solución

A CString puede convertir a un LPCTSTR, que es básicamente una const char* (const wchar_t* en Unicode construye).

Sabiendo esto, puede utilizar atof() :

CString thestring("13.37");
double d = atof(thestring).

... o para Unicode construye, _wtof() :

CString thestring(L"13.37");
double d = _wtof(thestring).

... o para apoyar tanto Unicode y no Unicode construye ...

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

(_tstof() es una macro que se expande a cualquiera atof() o _wtof() en función de si o no se define _UNICODE)

Otros consejos

Puede convertir cualquier cosa a cualquier cosa utilizando un std::stringstream. El único requisito es que el >> operadores y << ser implementadas. Stringstreams se pueden encontrar en el archivo de cabecera <sstream>.

std::stringstream converter;
converter << myString;
converter >> myDouble;

con el impulso lexical_cast biblioteca, lo hace

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

...

double d = lexical_cast<double>(thestring);

strtod (o wcstod ) será convertir cadenas a un valor de doble precisión.

(Requiere <stdlib.h> o <wchar.h>)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top