C ++ strtol () - C ++ मानक पुस्तकालय

C ++ में स्ट्रैटोल () फ़ंक्शन एक स्ट्रिंग की सामग्री को निर्दिष्ट आधार की एक अभिन्न संख्या के रूप में व्याख्या करता है और एक लंबे इंट के रूप में इसका मान लौटाता है।

C ++ में स्ट्रैटोल () फ़ंक्शन एक स्ट्रिंग की सामग्री को निर्दिष्ट आधार की एक अभिन्न संख्या के रूप में व्याख्या करता है और एक लंबे इंट के रूप में इसका मान लौटाता है। यह फ़ंक्शन स्ट्रिंग के अंतिम वैध चरित्र के बाद पहले वर्ण को इंगित करने के लिए एक संकेतक भी सेट करता है यदि कोई हो, अन्यथा सूचक शून्य पर सेट है।

 आधार 10 और स्ट्रिंग "12abc" के लिए: मान्य संख्यात्मक भाग -> 12 पहला वर्ण मान्य संख्यात्मक भाग के बाद -> ए

स्ट्रटोल () प्रोटोटाइप (C ++ 11 मानक के अनुसार)

 long int strtol (कास्ट चार * str, चार ** एंड, इंट बेस);

स्ट्रटोल () फ़ंक्शन स्ट्रिंग लेता है, चरित्र के लिए एक संकेतक और एक पूर्णांक मान - आधार इसके पैरामीटर के रूप में, स्ट्रिंग की सामग्री को दिए गए आधार की एक अभिन्न संख्या के रूप में व्याख्या करता है और एक लंबा इंट वैल्यू देता है।

यह फ़ंक्शन हेडर फ़ाइल में परिभाषित किया गया है।

strtol () पैरामीटर

  • str: एक स्ट्रिंग जिसमें एक अभिन्न संख्या का प्रतिनिधित्व होता है।
  • end:प्रकार चार के पहले से ही आवंटित वस्तु का संदर्भ *। अंतिम मान वर्ण के बाद str में अगले वर्ण के लिए अंत का मान सेट है। यह पैरामीटर एक शून्य सूचक भी हो सकता है, जिस स्थिति में इसका उपयोग नहीं किया जाता है।
  • base:अभिन्न मूल्य का आधार। आधार के लिए मान्य मानों का समूह (0, 2, 3,…, 35, 36) है।

strtol () वापसी मान

Strtol () फ़ंक्शन रिटर्न:

  • एक लंबा int मान (जो स्ट्रिंग से परिवर्तित किया गया है)।
  • 0 यदि कोई वैध रूपांतरण नहीं किया जा सका।

उदाहरण 1: C ++ में स्ट्रेटोल () कैसे काम करता है?

 #include #include using namespace std; int main() ( int base = 10; char str() = "27ab_1x"; char *end; long int num; num = strtol(str, &end, base); cout << "Number in String = " << str << endl; cout << "Number in Long Int = " << num << endl; cout << "End String = " << end << endl << endl; // the pointer to invalid characters can be null strcpy(str, "27"); cout << "Number in String = " << str << endl; num = strtol(str, &end, base); cout << "Number in Long Int = " << num << endl; if (*end) ( cout << end; ) else ( cout << "Null pointer"; ) return 0; ) 

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 स्ट्रिंग में संख्या = 27ab_1x लंबी इंट में संख्या = 27 अंत स्ट्रिंग = ab_1x स्ट्रिंग में संख्या = 27 संख्या में लंबे अंतर = 27 नल सूचक

Strtol () फ़ंक्शन के लिए एक मान्य पूर्णांक मान निम्न हैं:

  • एक वैकल्पिक + या - संकेत।
  • अष्टक आधार के लिए एक उपसर्ग 0 (केवल आधार = 8 या 0 पर लागू होता है)।
  • हेक्साडेसिमल आधार के लिए एक उपसर्ग 0x या 0X (केवल तब लागू होता है जब आधार = 16 या 0)।
  • अंकों और / या अक्षर का एक क्रम (यदि आधार 10 से अधिक है)।

पैरामीटर बेस के लिए मान्य मान (0, 2, 3,…, 35, 36) है। आधार 2 के लिए मान्य अंकों का एक सेट है (0, 1) के लिए, आधार 3 है (0, 1, 2) और इसी तरह। 11 से 36 तक के आधारों के लिए, वैध अंकों में अक्षर शामिल हैं। आधार 11 के लिए मान्य अंकों का सेट आधार के लिए (0, 1, 9, ए, ए) है, 12 (0, 1,…, 9, ए, ए, बी, बी) और इतने पर है।

नोट: यह याद रखना महत्वपूर्ण है कि एक आधार के लिए एक वैध चरित्र नीचे के उदाहरण के रूप में एक और आधार के लिए अमान्य स्ट्रिंग में समाप्त हो सकता है।

उदाहरण 2: स्ट्रेटोल () विभिन्न आधारों के साथ कार्य करता है

 #include #include #include using namespace std; int main() ( char *end; cout << "128bz" << " to Long Int with base-5 = " << strtol("128bxz", &end, 5) << endl; cout << "End String = " << end << endl << endl; cout << "128bz" << " to Long Int with base-12 = " << strtol("128bxz", &end, 12) << endl; cout << "End String = " << end << endl << endl; cout << "128bz" << " to Long Int with base-36 = " << strtol("128bxz", &end, 36) << endl; cout << "End String = " << end << endl << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 बेस -5 के साथ 128bz से लॉन्ग इंट तक। बेस -12 के साथ लॉन्ग इन्ट = 8bxz 128bz से बेस -12 = 2123 एंड स्ट्रिंग के साथ लॉन्ग इंट = बेस -36 के साथ लॉन्ग इंट में 128bz = 64214135 एंड स्ट्रिंग = 

स्ट्रेटोल () फ़ंक्शन सभी प्रमुख व्हाट्सएप पात्रों को अनदेखा करता है जब तक कि प्राथमिक गैर-व्हाट्सएप चरित्र नहीं मिलता है।

सामान्य तौर पर, strtol () फ़ंक्शन के लिए एक मान्य पूर्णांक तर्क निम्न रूप में है:

 (व्हाट्सएप) (- | +) (0 | 0x) (अल्फ़ान्यूमेरिक वर्ण)

फिर, इस चरित्र से शुरुआत करते हुए, यह संभव के रूप में कई पात्रों को लेता है जो एक वैध पूर्णांक प्रतिनिधित्व बनाता है और उन्हें लंबे समय तक अंतर मान में परिवर्तित करता है। अंतिम वैध चरित्र को नजरअंदाज करने के बाद स्ट्रिंग के जो कुछ भी बचा है, उसका परिणाम पर कोई प्रभाव नहीं पड़ता है।

उदाहरण 3: प्रमुख व्हाट्सएप और अमान्य रूपांतरण के लिए strtol () फ़ंक्शन

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Long Int with base-11 = " << strtol(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; cout << " 110bcd" << " to Long Int with base-2 = " << strtol(" 110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Long Int with base-10 = " << strtol("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 बेस -11 = 307 एंड स्ट्रिंग के साथ 25Xbz से लॉन्ग इंट तक = बेस -2 के साथ लॉन्ग इंट में xbz 110bcd। बेस -10 = 0 एंड स्ट्रिंग = ax110.97 के साथ लॉन्ग इन करने के लिए बेस -2 के साथ लॉन्ग इंट में xbz 110bcd 

यदि आधार 0 है, तो स्ट्रिंग के प्रारूप को देखकर संख्यात्मक आधार स्वचालित रूप से निर्धारित किया जाता है। यदि उपसर्ग 0 है, तो आधार अष्टक (8) है। यदि उपसर्ग 0x या 0X है, तो आधार हेक्साडेसिमल (16) है, अन्यथा आधार दशमलव (10) है।

उदाहरण 4: स्ट्रैटोल () बेस 0 के साथ फ़ंक्शन

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "0128ai" << " to Long Int with base-0 = " << strtol("0128ai", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0x15axzz" << " to Long Int with base-0 = " << strtol("0x15axzz", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "23dfl" << " to Long Int with base-0 = " << strtol("23dfl", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

0128ai से बेस-0 के साथ लॉन्ग इंट में = 0 एंड 10 स्ट्रिंग स्ट्रिंग = 8ai 0x15axzz के साथ लॉन्ग इंट में बेस-0 = 346 एंड स्ट्रिंग = xzz 23dfl से लॉन्ग इंट में बेस-0 = 23 एंड स्ट्रिंग =fl 

दिलचस्प लेख...