当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ strtoimax()用法及代码示例


C++中的strtoimax()函数将字符串的内容解释为指定基数的整数,并将其值作为intmax_t(最大宽度整数)返回。此函数还设置一个结束指针,该指针指向字符串的最后一个有效数字字符之后的第一个字符,如果没有这样的字符,则将指针设置为null。此函数在cinttypes头文件中定义。

用法:

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

参数:


  • str:指定由整数组成的字符串。
  • end:它是对char *类型的对象的引用。 end的值由函数设置为str中最后一个有效数字字符之后的下一个字符。如果不使用此参数,它也可以是空指针。
  • base:它代表t

确定有效字符及其在字符串中的解释的数字基数(基数)

返回类型strtoimax()函数返回两个值,如下所述:

  • 如果发生有效转换,则该函数将转换后的整数返回为整数值。
  • 如果无法执行有效的转换,则返回零值(0)

以下示例程序旨在说明上述函数:

示例1:

// 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; 
}
输出:
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

示例2:
程序以不同的基准转换多个值

// C++ program to illustrate the 
// strtoimax() function 
#include <bits/stdc++.h> 
using namespace std; 
  
// Drriver 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; 
}
输出:
The decimal equivalents of all numbers are 
10
40
15
4


相关用法


注:本文由纯净天空筛选整理自Aman Goyal 2大神的英文原创作品 strtoimax() function in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。