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

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

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

 आधार 10 और स्ट्रिंग "201xz $" मान्य संख्यात्मक भाग के लिए -> 201 मान्य संख्यात्मक भाग के बाद पहला चरित्र -> x

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

 long long int strtoll (const char * str, char ** end, int base);

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

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

strtoll () पैरामीटर

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

strtoll () वापसी मान

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

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

उदाहरण 1: स्ट्रेटोल () फ़ंक्शन कैसे काम करता है?

 #include #include #include using namespace std; int main() ( int base = 10; char numberString() = "13.5ab_1x"; char *end; long long int number; number = strtoll(numberString, &end, base); cout << "String value = " << numberString << endl; cout << "Long long int value = " << number << endl; cout << "End String = " << end << endl; strcpy(numberString, "13"); cout << "String value = " << numberString << endl; number = strtoll(numberString, &end, base); cout << "Long long int value = " << number << endl; if (*end) ( cout << end; ) else ( cout << "Null pointer"; ) return 0; )

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

 स्ट्रिंग मूल्य = 13.5ab_1x लंबे लंबे int मान = 13 समाप्ति स्ट्रिंग =। 5ab_1x स्ट्रिंग मान = 13 लंबे लंबे int मान = 13 अशक्त सूचक

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

  • एक वैकल्पिक + या - संकेत।
  • अष्टक आधार के लिए एक उपसर्ग 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 using namespace std; int main() ( char *end; cout << "23ajz" << " to Long Long Int with base-7 = " << strtoll("23ajz", &end, 7) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-20 = " << strtoll("23ajz", &end, 20) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-36 = " << strtoll("23ajz", &end, 36) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 बेस -7 के साथ 23 लॉन्ग लॉन्ग इन्ट -7 = 17 एंड स्ट्रिंग = ajz 23ajz से लॉन्ग लॉन्ग इंट तक बेस -20 = 17419 एंड स्ट्रिंग = z 23ajz के साथ लॉन्ग लॉन्ग इंट में बेस -36 = 3512873 स्ट्रींग =

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

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

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

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

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

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

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

 बेस -11 = 307 एंड स्ट्रींग = xbz 110bcd से लॉन्ग लॉन्ग इन टू बेस -2 = 6 एंड स्ट्रिंग = bcd ax110.97 से लॉन्ग लॉन्ग इंट में बेस -10 = 0 एंड स्ट्रिंग = ax110.97

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

उदाहरण 4: स्ट्रेटोल () बेस 0 के साथ कार्य करता है

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "025x" << " to Long Long Int with base-0 = " << strtoll("025x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0xf1x" << " to Long Long Int with base-0 = " << strtoll("0xf1x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "15ab" << " to Long Long Int with base-0 = " << strtoll("15ab", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 आधार के साथ 025x से लॉन्ग लॉन्ग इन्ट के साथ बेस-0 = 21 एंड स्ट्रिंग = x 0xf1x से लॉन्ग लॉन्ग इन में बेस-0 = 241 एंड स्ट्रिंग = x 15ab से लॉन्ग लॉन्ग इन में बेस-0 = 15 एंड के साथ स्ट्रिंग = ab

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