C ++ 11 के लिए अद्यतन
C++11
मानक के रूप में , स्ट्रिंग-टू-नंबर रूपांतरण और इसके विपरीत मानक पुस्तकालय में निर्मित होते हैं। निम्नलिखित सभी कार्य <string>
(पैराग्राफ 21.5 के अनुसार) मौजूद हैं।
स्ट्रिंग टू न्यूमेरिक
float stof(const string& str, size_t *idx = 0);
double stod(const string& str, size_t *idx = 0);
long double stold(const string& str, size_t *idx = 0);
int stoi(const string& str, size_t *idx = 0, int base = 10);
long stol(const string& str, size_t *idx = 0, int base = 10);
unsigned long stoul(const string& str, size_t *idx = 0, int base = 10);
long long stoll(const string& str, size_t *idx = 0, int base = 10);
unsigned long long stoull(const string& str, size_t *idx = 0, int base = 10);
इनमें से प्रत्येक इनपुट के रूप में एक स्ट्रिंग लेते हैं और इसे एक संख्या में बदलने की कोशिश करेंगे। यदि कोई मान्य संख्या का निर्माण नहीं किया जा सकता है, उदाहरण के लिए क्योंकि कोई संख्यात्मक डेटा नहीं है या संख्या प्रकार के लिए आउट-ऑफ-रेंज है, तो एक अपवाद फेंक दिया जाता है ( std::invalid_argument
या std::out_of_range
)।
यदि रूपांतरण सफल हुआ और idx
नहीं 0
,idx
तो पहले वर्ण का सूचकांक होगा जिसमें डिकोडिंग के लिए उपयोग नहीं किया गया था। यह अंतिम चरित्र के पीछे एक सूचकांक हो सकता है।
अंत में, अभिन्न प्रकार 9 से बड़े अंकों के लिए एक आधार निर्दिष्ट करने की अनुमति देते हैं, वर्णमाला ग्रहण की जाती है ( a=10
जब तक z=35
)। आप फ़्लोटिंग-पॉइंट नंबरों , हस्ताक्षरित पूर्णांक और अहस्ताक्षरित पूर्णांक के लिए यहां सटीक स्वरूपण के बारे में अधिक जानकारी प्राप्त कर सकते हैं ।
अंत में, प्रत्येक फ़ंक्शन के लिए एक अधिभार भी है जो std::wstring
पहले पैरामीटर के रूप में स्वीकार करता है ।
स्ट्रिंग के लिए संख्यात्मक
string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);
ये अधिक सीधे हैं, आप उपयुक्त संख्यात्मक प्रकार पास करते हैं और आपको एक स्ट्रिंग वापस मिलती है। स्वरूपण विकल्पों के लिए आपको C ++ 03 स्ट्रिंग विकल्प पर वापस जाना चाहिए और स्ट्रीम मैनिपुलेटर्स का उपयोग करना चाहिए, जैसा कि यहां एक अन्य उत्तर में बताया गया है।
जैसा कि टिप्पणियों में उल्लेख किया गया है कि ये फ़ंक्शन एक डिफ़ॉल्ट मंटिसा परिशुद्धता पर वापस आते हैं जो संभवतः अधिकतम परिशुद्धता नहीं है। यदि आपके आवेदन के लिए अधिक सटीकता की आवश्यकता है, तो अन्य स्ट्रिंग प्रारूपण प्रक्रियाओं पर वापस जाना सबसे अच्छा है।
वहाँ भी इसी तरह के कार्यों को परिभाषित किया जाता है जिन्हें नाम दिया गया है to_wstring
, ये वापस आ जाएंगे std::wstring
।