atoi函数和std::stoi函数的不同点
Posted dongshanzhishi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atoi函数和std::stoi函数的不同点相关的知识,希望对你有一定的参考价值。
atoi函数和std::stoi函数的不同点
出处不同
atoi()
函数是C标准库函数,头文件为#include<stdlib.h>
。同类型函数还包括atol()
,atof()
,strtol()
,strtof()
等;std::stoi()
函数是C++11开始加入的STL标准模版库的函数,头文件为#include<string>
。同类型函数还有std::stol()
,std::stoll()
;
功能不同
atoi()
- 会跳过前面的空白字符(包括空格,tab符号等),直到遇到第一个非空字符,并在遇到下一个非数字字符时结束转换;
- 转换的内容为正负符号和数字字符;
- 并且返回值为十进制;
std::stoi()
- 会跳过最前面的空白字符(包括空格,tab符号等),直到遇到第一个非空字符,并在遇到下一个非数字字符时结束转换;
- 转换的内容为正负符号和数字字符;
- 可以指定开始转换的pos;
- 可以转换成十进制,八进制和十六进制;
异常处理不同
atoi()
函数在转换时,如果遇到入参str不能转换或者str为空字符串时,返回值为0,不会抛出异常;std::stoi()
函数在转换时,如果入参str是字母或者空字符串而无法转换成数字时,会抛出std::invalid_argument
异常,使用者必须手动处理异常,否则会造成程序crash;
以上是关于atoi函数和std::stoi函数的不同点的主要内容,如果未能解决你的问题,请参考以下文章