strol() function in C++ - GeeksforGeeks

21 Nov, 2021
The strtol() function in C++ interprets the contents of a string as an integral number of the specified base and return its value as a long int.This function also sets an end pointer that points to the first character after the last valid numeric character of the string, if there is no such character then the pointer is set to null. This function is defined in cstdlib header file.Syntax: 
long int strtol(const char* str, char** end, int base)
Parameter :The function accepts three mandatory parameters which are described below.  
str: A string consist of an integral number.
end: This is reference to object of type char*. The value of end is set by the function to the next character in str after the last valid numeric character. This parameter can also be a null pointer, in case if it is not used.
base: It represent the numerical base (radix) that determines the valid characters and their interpretation in the string
Return type :The function returns two types of values which are described below:  
If valid conversion occur then the function returns the converted integral number as long int value.
If no valid conversion could be performed, a zero value is returned.
Below programs illustrate the above function. Program 1:  
CPP
// C++ program to illustrate the// strtol() function#include <bits/stdc++.h>using namespace std; // Driver codeint main(){    int base = 10;    char str[] = "123abc";    char* end;    long int num;     // Function used to convert string    num = strtol(str, &end, base);     cout << "Given  String = " << str << endl;    cout << "Number with base 10 in string " << num << endl;    cout << "End String points to " << end << endl         << endl;     // in this case the end pointer points to null    strcpy(str, "12345");     // prints the current string    cout << "Given String = " << str << endl;     // function used    num = strtol(str, &end, base);     // prints the converted integer    cout << "Number with base 10 in string " << num << endl;    if (*end) {        cout << end;    }    else {        cout << "Null pointer";    }    return 0;}
Given  String = 123abc
Number with base 10 in string 123
End String points to abc

Given String = 12345
Number with base 10 in string 12345
Null pointer
 
Program 2: 
CPP
// C++ program to illustrate the// strtol() function Program to// convert multiple values at different base#include <bits/stdc++.h>using namespace std; // Driver codeint main(){    char str[] = "100 ab 123 1010";    char* end;    long int a, b, c, d;     // base 10    a = strtol(str, &end, 10);     // base 16    b = strtol(end, &end, 16);     // base 8    c = strtol(end, &end, 8);     // base 2    d = strtol(end, &end, 2);     cout << "The decimal equivalents of all numbers are \n";     cout << a << endl         << b << endl         << c << endl         << d;    return 0;}
The decimal equivalents of all numbers are 
100
171
83
10
 
akshaysingh98088
adnanirshad158
simmytarika5
CPP-Functions
STL
C++
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Inheritance in C++
Map in C++ Standard Template Library (STL)
C++ Classes and Objects
Bitwise Operators in C/C++
Virtual Function in C++
Templates in C++ with Examples
Constructors in C++
Operator Overloading in C++
Socket Programming in C/C++
vector erase() and clear() in C++