问题
cpp中使用cin输入数字,像05,08这样的输入,并不能转换成我们预期的5和8。原因是以0开头的整数被视为八进制数,如果输入08,八进制里没有"8",会直接报错。
那如果用户一定要输入以0开头的整数,该如何解决呢?
解决方案
字符串转换
atoi函数
$atoi$ 函数是c语言就有的函数,可以把字符串转换为int整数。
原型为 int atoi(const char *str)
工作原理:调用atoi时,从左开始扫描字符串,遇到首个非空字符且为数字或字符号开始转换,直到遇到非数字字符或’\0’时停止,并返回转换后的整数,其余情况返回0。
正常用法:
|
|
返回$122$
不当用法:
|
|
默认返回$0$
相似的函数还有:
-
itoa()将整数转为字符串
-
atof将字符串转为浮点型