سؤال

كيف يمكنني تحويل CString إلى أ double في C ++؟

دعم Unicode سيكون لطيفا أيضا.

شكرا!

هل كانت مفيدة؟

المحلول

أ CString يمكن تحويل إلى LPCTSTR, ، وهو أساسا const char* (const wchar_t* في يونيكود يبني).

معرفة هذا، يمكنك استخدام atof():

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

... أو بالنسبة إلى Unicode يبني، _wtof():

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

... أو لدعم كل من Unicode وغير Unicode Builds ...

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

(_tstof() هو ماكرو يتوسع إلى أي atof() أو _wtof() بناء على ما إذا كان _UNICODE ويعرف)

نصائح أخرى

يمكنك تحويل أي شيء إلى أي شيء باستخدام أ std::stringstream. وبعد الشرط الوحيد هو أن المشغلين >> و << أن تنفذ. يمكن العثور على stringstreams في <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);

strtod. (أو Wcstod.) سوف تحويل السلاسل إلى قيمة مزدوجة الدقة.

(يتطلب <stdlib.h> أو <wchar.h>)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top