Home C&C++函数库 c++ 语法 程序源码 Linux C库

strtoull

函数   <cstdlib>

unsigned long long int strtoull (const char* str, char** endptr, int base);

将字符串转换为 unsigned long long integer

解析C-string str,将其内容解释为指定base(进制)的整数值,返回 unsigned long long int类型的值。

这个函数类似于strtol来解释字符串,但会产生 unsigned long long int类型的数字 (有关解释过程的详细信息,请参阅strtol)。

☲  参数


str
以整数表示开头的c字符串。

endptr
对已经分配的char*类型对象的引用,该对象的值由函数设置为数值后的str中的下一个字符。
这个参数也可以是一个空指针,在这种情况下它不会被使用。

base
确定有效字符及其解释的基数(radix)。
如果该值为0,则使用的基数由序列中的格式决定(详情请参阅strtol)。

☉  返回值



如果成功,该函数将转换后的整数值作为 unsigned long long int型值返回。

如果不能执行有效的转换,则返回零值(0ULL)。

如果读的值超出了unsigned long long int的可表示值范围,则函数返回ULLONG_MAX (在<climits>中定义),errno设置为ERANGE。

☣  示例



/* strtoull example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* strtoull */

int main ()
{
  char szNumbers[] = "250068492 7b06af00 1100011011110101010001100000 0x6fffff";
  char * pEnd;
  unsigned long long int ulli1, ulli2, ulli3, ulli4;
  ulli1 = strtoull (szNumbers, &pEnd, 10);
  ulli2 = strtoull (pEnd, &pEnd, 16);
  ulli3 = strtoull (pEnd, &pEnd, 2);
  ulli4 = strtoull (pEnd, NULL, 0);
  printf ("The decimal equivalents are: %llu, %llu, %llu and %llu.\n", ulli1, ulli2, ulli3, ulli4);
  return 0;
}

输出:
The decimal equivalents are: 250068492, 2064035584, 208622688 and 7340031.

↭  数据竞争



str指向的数组被访问,endptr指向的指针被修改(如果不是null)。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。
如果str没有指向有效的C-string,或者endptr没有指向有效的指针对象,将导致未定义的行为。

🍄  另请参阅



strtol 将字符串转换为unsigned long integer(function )
strtod 将字符串转换为double (function )
atol 将字符串转换为 long integer (function )

联系我们 免责声明 关于CandCplus 网站地图