strtol() function in C++ STL

01 Jun, 2022
The strtol() function is a builtin function in C++ STL which converts the contents of a string as an integral number of the specified base and return its value as a long int. Syntax:
strtol(s, &end, b)
Parameters: The function accepts three mandatory parameters which are described as below:
s: specifies the string which has the representation of an integral number.
end: indicates where the conversion stopped, refers to an already allocated object of type char*. The value of the end is set by the function to the next character in s after the last valid character.It can also be a null pointer, in which case it is not used.
b: specifies to the base of the integral value.
Return Value: The function returns value of two types:
If a valid conversion occurs, then a long int value is returned.
If no valid conversion happens, then 0 is returned.
Below programs illustrate the above function. Program 1: 
CPP
// C++ program to illustrate the// strtol() function when decimal base#include <cstdlib>#include <cstring>#include <iostream>#include <string>using namespace std; int main(){    int b = 10;    char s[] = "6010IG_2016p";    char* end;    long int n;     n = strtol(s, &end, b);    cout << "Number in  String = " << s << endl;    cout << "Number in Long Int = " << n << endl;    cout << "End String = " << end << endl         << endl;     // the pointer to invalid    // characters can be null    strcpy(s, "47");    cout << "Number in  String = " << s << endl;    n = strtol(s, &end, b);    cout << "Number in Long Int = " << n << endl;    if (*end) {        cout << end;    }    else {        cout << "Null pointer";    }    return 0;}
Number in  String = 6010IG_2016p
Number in Long Int = 6010
End String = IG_2016p

Number in  String = 47
Number in Long Int = 47
Null pointer
Program 2: 
CPP
// C++ program to illustrate the// strtol() function#include <cstdlib>#include <cstring>#include <iostream>using namespace std; int main(){    char* end;     cout << "489bc"         << " to Long Int with base-4 = "         << strtol("489bc", &end, 4) << endl;    cout << "End String = " << end << endl;     cout << "123s"         << " to Long Int with base-11 = "         << strtol("123s", &end, 11) << endl;    cout << "End String = " << end << endl;     cout << "56xyz"         << " to Long Int with base-36 = "         << strtol("56xyz", &end, 36) << endl;}
489bc to Long Int with base-4 = 0
End String = 489bc
123s to Long Int with base-11 = 146
End String = s
56xyz to Long Int with base-36 = 8722043
Program 3: 
CPP
// C++ program to illustrate the// strtol() function when base is 0#include <cstdlib>#include <iostream> using namespace std; int main(){    char* end;     // octal base    cout << "312gfg"         << " to Long Int with base-0 = "         << strtol("312gfg", &end, 0) << endl;    cout << "End String = " << end << endl         << endl;     // hexadecimal base    cout << "0q15axtz"         << " to Long Int with base-0 = "         << strtol("0q15axtz", &end, 0) << endl;    cout << "End String = " << end << endl         << endl;     // decimal base    cout << "33ffn"         << " to Long Int with base-0 = "         << strtol("33ffn", &end, 0) << endl;    cout << "End String = ";     return 0;}
312gfg to Long Int with base-0 = 312
End String = gfg

0q15axtz to Long Int with base-0 = 0
End String = q15axtz

33ffn to Long Int with base-0 = 33
End String =
Program 4 
CPP
// C++ program to illustrate the// strtol() function for invalid// conversions and leading whitespaces.#include <cstdlib>#include <iostream>using namespace std; int main(){    char* end;     cout << "22abcd"         << " to Long Int with base-6 = "         << strtol("  22abcd", &end, 6) << endl;    cout << "End String = " << end << endl         << endl;     cout << "114cd"         << " to Long Int with base-2 = "         << strtol("   114cd", &end, 2) << endl;    cout << "End String = " << end << endl         << endl;     cout << "e10.79"         << " to Long Int with base-10 = "         << strtol("e10.79", &end, 10) << endl;     cout << "End String = " << end << endl         << endl;     return 0;}
22abcd to Long Int with base-6 = 14
End String = abcd

114cd to Long Int with base-2 = 3
End String = 4cd

e10.79 to Long Int with base-10 = 0
End String = e10.79
harry4951
CPP-Functions
CPP-Library
STL
C++
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Bitwise Operators in C/C++
Set in C++ Standard Template Library (STL)
unordered_map in C++ STL
Inheritance in C++
vector erase() and clear() in C++
The C++ Standard Template Library (STL)
C++ Classes and Objects
Substring in C++
Object Oriented Programming in C++
Priority Queue in C++ Standard Template Library (STL)