strtol() function in C++ STL

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: 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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Output:

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Output:

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Output:

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Output:

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


My Personal Notes arrow_drop_up

Budding Web DeveloperKeen learnerAverage CoderDancer&Social Activist

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.