كيف يمكنني تحويل cstring إلى مزدوجة في C ++؟
-
06-09-2019 - |
سؤال
كيف يمكنني تحويل 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);
لا تنتمي إلى StackOverflow