विहित समाधान रूपांतरण के लिए सी ++ स्टैंडर्ड लाइब्रेरी का प्रयोग है। वांछित रिटर्न प्रकार के आधार पर, निम्नलिखित रूपांतरण फ़ंक्शन उपलब्ध हैं: std::stoi, std::stol, or std::stoll (या उनके हस्ताक्षरित समकक्ष std::stoul, std::stoull)।
कार्यान्वयन काफी सीधे आगे है:
int ToInt(const CString& str) {
return std::stoi({ str.GetString(), static_cast<size_t>(str.GetLength()) });
}
long ToLong(const CString& str) {
return std::stol({ str.GetString(), static_cast<size_t>(str.GetLength()) });
}
long long ToLongLong(const CString& str) {
return std::stoll({ str.GetString(), static_cast<size_t>(str.GetLength()) });
}
unsigned long ToULong(const CString& str) {
return std::stoul({ str.GetString(), static_cast<size_t>(str.GetLength()) });
}
unsigned long long ToULongLong(const CString& str) {
return std::stoull({ str.GetString(), static_cast<size_t>(str.GetLength()) });
}
इन कार्यान्वयन के सभी अपवादों के माध्यम से त्रुटि रिपोर्ट (std::invalid_argument अगर कोई रूपांतरण किया जा सकता है, std::out_of_range अगर परिवर्तित मूल्य परिणाम प्रकार की सीमा से बाहर गिर जाएगा)। अस्थायी std::[w]string
का निर्माण भी फेंक सकता है।
कार्यान्वयन यूनिकोड के साथ-साथ एमबीसीएस परियोजनाओं दोनों के लिए भी उपयोग किया जा सकता है।
यहां ठोकर खाई गई क्योंकि संकलक कहता है: "atoi: CString को const char * में परिवर्तित नहीं कर सकता"; तो मैंने पाया कि आपका जवाब काम नहीं करता है अगर यह एक यूनिकोड प्रोजेक्ट है, तो यूटी – Zac
त्रुटि सी 2664: 'atoi' द्वारा इंगित किया गया है: 'CSTring' से 'const char char' 'पैरामीटर 1 को कन्वर्ट नहीं कर सकता है' – maamaa