Open In App

strtoumax() function in C++

Last Updated : 31 Aug, 2018
Improve
Improve
Like Article
Like
Save
Share
Report

The strtoumax() function in C++ interprets the contents of a string as an integral number of the specified base and return its value as an uintmax_t(maximum width unsigned 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. The return value is set to garbage value when a negative number is entered as a string. This function is defined in cinttypes header file.

Syntax:

uintmax_t strtoumax(const char* str, char** end, int base)

Parameter: The function accepts three mandatory parameters which are described below:

  • str: specifies a string consist of an integral number.
  • end: specifies a 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: specifies the 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 and if the string includes minus sign with the corresponding integer number then the garbage value is returned by the function otherwise a zero value is returned (0)

Below programs illustrate the above function:

Program 1 :




// C++ program to illustrate the
// strtoumax() function
#include <iostream>
#include<cinttypes>
#include<cstring>
  
using namespace std;
  
// Driver code
int main()
{
    int base = 10;
    char str[] = "999999abcdefg";
    char* end;
    uintmax_t num;
  
    num = strtoumax(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 = 2;
    strcpy(str, "10010");
    cout << "Given String = " << str << endl;
    num = strtoumax(str, &end, base);
    cout << "Number with base 2 in string " << num << endl;
    if (*end) {
        cout << end;
    }
    else {
        cout << "Null pointer";
    }
    return 0;
}


Output:

Given String = 999999abcdefg
Number with base 10 in string 999999
End String points to abcdefg

Given String = 10010
Number with base 2 in string 18
Null pointer

Program 2 :




// C++ program to illustrate the
// strtoumax() function
#include <iostream>
#include<cinttypes>
#include<cstring>
  
using namespace std;
  
// Driver code
int main()
{
    int base = 10;
    char str[] = "-10000";
    char* end;
    uintmax_t num;
    // if negative value is converted then it gives garbage value
    num = strtoumax(str, &end, base);
    cout << "Given String = " << str << endl;
    cout << "Garbage value stored in num " << num << endl;
    if (*end) {
        cout << "End String points to " << end;
    }
    else {
        cout << "Null pointer" << endl
             << endl;
    }
  
    // in this case no numeric character is there
    // so the function returns 0
    base = 10;
    strcpy(str, "abcd");
    cout << "Given String = " << str << endl;
    num = strtoumax(str, &end, base);
    cout << "Number with base 10 in string " << num << endl;
    if (*end) {
        cout << "End String points to " << end;
    }
    else {
        cout << "Null pointer";
    }
    return 0;
}


Output:

Given String = -10000
Garbage value stored in num 18446744073709541616
Null pointer

Given String = abcd
Number with base 10 in string 0
End String points to abcd


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

Similar Reads