strtol() फंक्शन का उपयोग स्ट्रिंग को लॉन्ग इंटीजर्स में बदलने के लिए किया जाता है। यह पॉइंटर को अंतिम वैध वर्ण के बाद पहले वर्ण पर इंगित करने के लिए सेट करता है। सिंटैक्स निम्नलिखित है। यह फंक्शन cstdlib लाइब्रेरी में मौजूद है।
long int strtol(const char* str, char** end, int base)
यह फंक्शन तीन आर्गुमेंट्स लेता है:
- str: स्ट्रिंग की शुरुआत।
- str_end: फंक्शन द्वारा सेट किया जाता है अंतिम वैध वर्ण के बाद अगले वर्ण पर, यदि कोई वर्ण है, अन्यथा NULL।
- base: यह बेस निर्दिष्ट करता है। बेस मान (0, 2, 3, ..., 35, 36) हो सकते हैं।
यह फंक्शन परिवर्तित long int लौटाता है। जब वर्ण NULL की ओर इंगित करता है, तो यह 0 लौटाता है।
उदाहरण 1: बेस 10 (दशमलव)
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
char string1[] = "777HelloWorld";
char string2[] = "565Hello";
char* End;
int base = 10;
int value;
value = strtol(string1, &End, base);
cout << "The string Value = " << string1 << "\n";
cout << "Long Int value = " << value << "\n";
cout << "End String = " << End << "\n";
value = strtol(string2, &End, base);
cout << "\nThe string Value = " << string2 << "\n";
cout << "Long Int value = " << value << "\n";
cout << "End String = " << End;
return 0;
}
आउटपुट
The string Value = 777HelloWorld Long Int value = 777 End String = HelloWorld The string Value = 565Hello Long Int value = 565 End String = Hello
उदाहरण 2: बेस 16 (हेक्साडेसिमल)
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
char string1[] = "5EHelloWorld";
char string2[] = "125Hello";
char* End;
int base = 16;
int value;
value = strtol(string1, &End, base);
cout << "The string Value = " << string1 << "\n";
cout << "Long Int value = " << value << "\n";
cout << "End String = " << End << "\n";
value = strtol(string2, &End, base);
cout << "\nThe string Value = " << string2 << "\n";
cout << "Long Int value = " << value << "\n";
cout << "End String = " << End;
return 0;
}
आउटपुट
The string Value = 5EHelloWorld Long Int value = 94 End String = HelloWorld The string Value = 125Hello Long Int value = 293 End String = Hello
यहाँ स्ट्रिंग में 5E है जिसका मान दशमलव में 94 है, और दूसरी स्ट्रिंग में 125 है जो दशमलव में 293 है।
महत्वपूर्ण नोट्स
base = 0होने पर, स्ट्रिंग प्रीफिक्स के आधार पर बेस ऑटो-डिटेक्ट होता है (0xहेक्स के लिए,0ऑक्टल के लिए)।- ओवरफ्लो होने पर
LONG_MAXयाLONG_MINलौटाता है औरerrnoकोERANGEपर सेट करता है। - अमान्य इनपुट के लिए 0 लौटाता है।