मैं CString
कोमें C++ में कैसे परिवर्तित करूं?मैं CS+ को C++ में डबल में कैसे परिवर्तित करूं?
यूनिकोड समर्थन भी अच्छा होगा।
धन्यवाद!
मैं CString
कोमें C++ में कैसे परिवर्तित करूं?मैं CS+ को C++ में डबल में कैसे परिवर्तित करूं?
यूनिकोड समर्थन भी अच्छा होगा।
धन्यवाद!
एक CString
एक LPCTSTR
, जो मूल रूप से एक const char*
(const wchar_t*
यूनिकोड में बनाता है) को बदल सकते हैं।
यह जानकर, आप atof()
उपयोग कर सकते हैं: यूनिकोड बनाता
CString thestring("13.37");
double d = atof(thestring).
... या के लिए, _wtof()
:
CString thestring(L"13.37");
double d = _wtof(thestring).
... या दोनों यूनिकोड और गैर-यूनिकोड बनाता है समर्थन करने के लिए। ..
CString thestring(_T("13.37"));
double d = _tstof(thestring).
(_tstof()
एक मैक्रो है जो 01 तक फैलता हैया _wtof()
किया जाए या नहीं _UNICODE
परिभाषित किया गया है के आधार पर)
यह लिंक आपको "wcstod" दिखाता है जो मैं यूनिकोड का समर्थन करने के लिए उपयोग करता हूं। http://msdn.microsoft.com/en-us/library/kxsfc1ab(VS.80).aspx –
यह काम करता है, लेकिन एसएमडी :: स्ट्रिंगस्ट्रीम का आईएमओ मिघमोस का सुझाव थोड़ा क्लीनर है। – Pete
_wcstod_l/_tcstod_l एक को लोकेल निर्दिष्ट करने की अनुमति देता है, इसलिए कोई स्थानीय प्रारूप (दशमलव डेलीमीटर को अल्पविराम या डॉट आदि के रूप में संभाल सकता है) –
, आप
#include <boost/lexical_cast.hpp>
using namespace boost;
...
double d = lexical_cast<double>(thestring);
तुम कुछ भी करने के लिएकुछ भी परिवर्तित एक std::stringstream
का उपयोग कर सकते हैं। एकमात्र आवश्यकता यह है कि ऑपरेटर >>
और <<
लागू किए जाएंगे। स्ट्रिंगस्ट्रीम <sstream>
हेडर फ़ाइल में पाया जा सकता है।
std::stringstream converter;
converter << myString;
converter >> myDouble;
यह मेरे लिए अच्छा लगा। दुर्भाग्यवश यह माइक्रोसॉफ्ट (एमएफसी) सीएसटींग प्रकार के साथ यहां प्रश्न पूछे जाने वाले परिदृश्य के लिए काम नहीं करता है। मुझे यह संकलित मिला, लेकिन परिवर्तित डबल नंबर यादृच्छिक प्रतीत होता था, कम से कम इसका स्ट्रिंग से कोई संबंध नहीं था। मुझे उम्मीद है कि यह अन्य प्रकार के लिए अच्छा काम करता है जो << and >> ऑपरेटर को बेहतर ढंग से कार्यान्वित करते हैं। मैं अभी तक सी ++ में std तारों का उपयोग करने में कोई विशेषज्ञ नहीं हूं, लेकिन मेरे लिए एक कनवर्टर जो त्रुटि या अपवाद फेंकने के बिना गलत संख्या में परिणामस्वरूप बहुत खतरनाक है। – Philm
टिप्पणी: अन्य सुझाव यहां, _tstof() ने CSTring को मेरे लिए एक डबल में परिवर्तित करने के लिए ठीक काम किया। – Philm
@ फिलम: यह उत्तर ** ** एमएफसी की 'सीएसटींगिंग' ऑब्जेक्ट्स के साथ ठीक से उपयोग किया जा सकता है। आपको 'ऑपरेटर <<()' की आवश्यकता नहीं है। कन्स्ट्रक्टर के लिए यही है: 'std :: wstringstream कनवर्टर (myString);'। ध्यान दें कि इसके लिए 'CStringW' की आवश्यकता होती है (जो, अधिकांश मामलों में, वैसे भी सही प्रकार है)। हालांकि, वहां अभी भी एक मूक हत्यारा है। यह स्पष्ट, सुरुचिपूर्ण लगता है। और गलत यह रूपांतरण के लिए वर्तमान थ्रेड लोकेल का उपयोग करता है। यह हो सकता है कि आप जो चाहें हो या न हो। एक समाधान का उपयोग करने के लिए बेहतर है जो आपको रूपांतरण के लिए उपयोग करने के लिए लोकेल को स्पष्ट रूप से निर्दिष्ट करने की अनुमति देता है। – IInspectable
मुझे सच में विश्वास नहीं है कि यह अभी तक नहीं पूछा गया है ... लेकिन खोज ने कुछ भी नहीं बताया। यदि यह एक डुप्लिकेट है, तो कृपया नम्र रहें :) –
या तो यहां जवाब नहीं मिला, लेकिन "डबल टू क्रिस्टिंग" को गुगल करने से आपको पहली हिट पर सही जवाब मिल जाता है। –
@ एंड्रयूबेनब्रिज वास्तव में ऐसा करता है, अगर "सही उत्तर" से आपका मतलब यह पृष्ठ यहां है :) – aquirdturtle