Open In App

strtoimax() function in C++

Last Updated : 24 Oct, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

The strtoimax() function in C++ interprets the contents of a string as an integral number of the specified base and return its value as an intmax_t(maximum width integer). 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 cinttypes header file.
Syntax: 
 

intmax_t strtoimax(const char* str, char** end, int base)

Parameters: 
 

  • str: specifies a string consist of an integral number.
  • end: it is the reference to an 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 t

he numerical base (radix) that determines the valid characters and their interpretation in the string
Return Type<: The strtoimax() function returns two values which are described below: 
 

  • If valid conversion occur then the function returns the converted integral number as integer value.
  • If no valid conversion could be performed, a zero value is returned (0)

Below programs illustrate the above function: 
Program 1: 
 

CPP




// C++ program to illustrate the
// strtoimax() function
#include <bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
    int base = 10;
    char str[] = "1000xyz";
    char* end;
    intmax_t num;
 
    num = strtoimax(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
    // here base change to char16
    base = 16;
    strcpy(str, "ff");
    cout << "Given String = " << str << endl;
    num = strtoimax(str, &end, base);
    cout << "Number with base 16 in string " << num << endl;
    if (*end) {
        cout << end;
    }
    else {
        cout << "Null pointer";
    }
    return 0;
}


Output: 

Given String = 1000xyz
Number with base 10 in string 1000
End String points to xyz

Given String = ff
Number with base 16 in string 255
Null pointer

 

Program 2: 
Program to convert multiple values at different base 
 

CPP




// C++ program to illustrate the
// strtoimax() function
#include <bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
    char str[] = "10 50 f 100 ";
    char* end;
    intmax_t a, b, c, d;
 
    // at base 10
    a = strtoimax(str, &end, 10);
    // at base 8
    b = strtoimax(end, &end, 8);
    // at base 16
    c = strtoimax(end, &end, 16);
    // at base 2
    d = strtoimax(end, &end, 2);
    cout << "The decimal equivalents of all numbers are \n";
    cout << a << endl
         << b << endl
         << c << endl
         << d;
    return 0;
}


Output: 

The decimal equivalents of all numbers are 
10
40
15
4

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads