[C++] atoi()和stoi()函数

本文介绍了C++中将字符串转换为整数的两个函数:atoi和stoi。相同之处在于它们都用于字符串到整数的转换,都需要包含头文件。不同点在于,stoi进行范围检查,超出int范围会抛出异常,而atoi则不进行检查,可能产生不确定的结果。代码示例展示了两者在处理超出范围数字时的行为差异。
摘要由CSDN通过智能技术生成

相同点

  • 都是C++的字符串处理函数,把数字字符串转换成int输出
  • 头文件都是#include

不同点

  • atoi()的参数是const char *,因此对于一个字符串str,我们必须调用c_str()方法,把string转换成const char *类型
  • stoi()的参数是const string *,不需要转化为为const char *
  • stoi()会做范围检查,默认范围在int的范围内,如果超出范围的话则会runtime error!
  • atoi()不会做范围检查,如果超出范围的话,超出上界,则输出上界,超出下界,则输出下界(实际测试,超出上下界并不输出上下界)

C++中各种类型的范围

类型含义最小尺寸范围
bool布尔类型最定义0或1
char字符8位最小-128 最大127
short短整型16位最小-32768 最大32767
int整型32位(4个字节)最小-2147483648 最大 2147483647
long长整型32位(4个字节)最小-2147483648 最大 2147483647
long long长整型64位
float单精度浮点型6位有效数字
double双精度浮点型12位有效数字

代码示例

#include <stdio.h>
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
  string s1 = "2147482", s2 = "-2147483648";
  string s3 = "2147483647", s4 = "-2147483648";
  cout << stoi(s1) << endl;          // stoi会做范围检查,超出范围会报错:'std::out_of_range'
  cout << stoi(s2) << endl;          
  cout << atoi(s3.c_str()) << endl;  // atoi不会做范围检查
  cout << atoi(s4.c_str()) << endl;  
  return 0;
}
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值