把字符串转换成整数

本文探讨如何不依赖库函数atoi,手动将字符串转换为整数。算法思路是逐位遍历字符串,将已读取的数字乘以10并累加当前字符的值。同时,考虑负数、非法输入和整数溢出的情况。对于负数,检查首个字符是否为正负号;非法输入使用全局bool变量记录;溢出问题需要特殊处理。
摘要由CSDN通过智能技术生成
【题   目】输入一个表示整数的字符串,把该字符串转换成整数并输出。例如:输入“123”,输出整数123.

  【思   路】当然首先想到的就是C语言库函数atoi,一行代码就完事了,当然我们是想不借助该库函数来实现自己的算法。首先,我们考虑怎么把字符串转换成整数,我们输入“123”,我们可以遍历这个字符串,首先读入1,然后读到2,这时我们想要的是12=1×10+2;然后读入3,我们想要的是123=12×10+3;分析到这里,我们就会发现,我们只需要注意遍历每一个字符,将已经得到的数字×10然后加上该字符,就能得到整数了,用一个循环就可以轻松搞定。

  算法的主体框架算是完成了,但是我们还要考虑特殊的输入情况;(1)如果是负数怎么办?我们可以首先判断第一个字符是不是正负号,是符号的话,最后记得将所得的数字加一个负号就OK了。(2)考虑非法输入的情况,如果用户输入的字符不是在0-9之间的字符,而是别的字符,我们返回什么,如果返回0,那么如果用户的确输入的是0,我们返回0;怎么区分这两种情况呢?我们可以用一个bool型的全局变量来存放是否是非法输入。(3)最后我们还要考虑,由于字符串的长度可以很长,那么它对应的整数就可能产生溢出,对于这种情况,我们也要进行处理。好了,经过这样的考虑,我们就可以写出如下的代码了:

#include<iostream>
 #include<string>
 #include<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值