Namespaces
Variants

atoi, atol, atoll

From cppreference.net
< c ‎ | string ‎ | byte
定义于头文件 <stdlib.h>
int atoi ( const char * str ) ;
(1)
long atol ( const char * str ) ;
(2)
long long atoll ( const char * str ) ;
(3) (C99起)

str 所指向的字节字符串中的整数值进行解释。隐含的基数始终为 10

丢弃所有空白字符,直至找到第一个非空白字符为止,然后尽可能多地提取字符以组成有效的整数表示形式,并将其转换为整数值。有效的整数值由以下部分组成:

  • (可选) 正负号
  • 数字

如果结果值无法被表示,即转换后的值超出相应返回类型的范围,则行为是未定义的。

目录

参数

str - 指向要解析的以空字符结尾的字节字符串的指针

返回值

成功时对应 str 内容的整数值。

如果无法执行转换,将返回 0

注释

该名称代表“ASCII 转整数”。

示例

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("%i\n", atoi(" -123junk"));
    printf("%i\n", atoi(" +321dust"));
    printf("%i\n", atoi("0"));
    printf("%i\n", atoi("0042")); // 作为带前导零的十进制数处理
    printf("%i\n", atoi("0x2A")); // 仅转换前导零并丢弃"x2A"
    printf("%i\n", atoi("junk")); // 无法执行转换
    printf("%i\n", atoi("2147483648")); // 未定义行为:超出int范围
}

可能的输出:

-123
321
0
42
0
0
-2147483648

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 7.22.1.2 atoi、atol 和 atoll 函数 (p: 待定)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.22.1.2 atoi、atol 和 atoll 函数 (p: 249)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.22.1.2 atoi、atol 和 atoll 函数 (p: 341)
  • C99标准(ISO/IEC 9899:1999):
  • 7.20.1.2 atoi、atol和atoll函数(页:307)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 4.10.1.2 atoi 函数
  • 4.10.1.3 atol 函数

参见

将字节字符串转换为整数值
(函数)
将字节字符串转换为无符号整数值
(函数)
(C95) (C99)
将宽字符串转换为整数值
(函数)
(C95) (C99)
将宽字符串转换为无符号整数值
(函数)
C++ 文档 关于 atoi , atol , atoll