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

strtoll

函数   <cstdlib>

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

将字符串转换为 long long integer

解析C-string str,将其内容解释为指定base(进制)的整数值,该整数值返回为long long int类型的值。
如果endptr不是空指针,该函数还将endptr的值设置为指向数字后面的第一个字符。

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

☲  参数


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

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

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

☉  返回值



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

如果不能执行有效的转换,则函数返回0(0LL)。

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

☣  示例



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

int main ()
{
  char szNumbers[] = "1856892505 17b00a12b -01100011010110000010001101100 0x6fffff";
  char* pEnd;
  long long int lli1, lli2, lli3, lli4;
  lli1 = strtoll (szNumbers, &pEnd, 10);
  lli2 = strtoll (pEnd, &pEnd, 16);
  lli3 = strtoll (pEnd, &pEnd, 2);
  lli4 = strtoll (pEnd, NULL, 0);
  printf ("The decimal equivalents are: %lld, %lld, %lld and %lld.\n", lli1, lli2, lli3, lli4);
  return 0;
}

输出:
The decimal equivalents are: 1856892505, 6358606123, -208340076 and 7340031

↭  数据竞争



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

❆  异常(c++)



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

🍄  另请参阅



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

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