String to Integer (atoi)

C++atoi函数实现解析
本文介绍了一种C++中实现atoi函数的方法,通过去除字符串前导空格、处理正负号并遍历数字字符来转换成整数,同时考虑了整数溢出的情况。
 1 int max_value=2147483647;
 2 int min_value=-2147483648;
 3 class Solution {
 4 public:
 5     int myAtoi(string str) {
 6         long long int ans=0;
 7         int len=str.size(),i=0;
 8         int sign=1;
 9         while(str[i]==' ')i++;
10         if(str[i]=='-'||str[i]=='+')
11         {
12             if(str[i]=='-')
13                 sign=-1;
14             i++;
15         }
16         for(;i<len;i++)
17         {
18             if(!isdigit(str[i]))
19             {
20                 break;
21             }
22             ans=ans*10+(str[i]-'0')*sign;
23             if(ans>max_value)
24                 ans=max_value;
25             if(ans<min_value)
26                 ans=min_value;
27         }
28         return ans;
29     }
30 };
View Code

1、首先去掉前导空格

2、处理+ —操作符,Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible题意貌似每个字符串都有一个操作符,但是测试用例好像并不是这样

3、遇到非数字字符结束循环

4.输入问题,c++中的cin>>string x 的方式相当于C中的scanf输入法,并不会输入空格,若想要c 中的gets(char x[]) 的效果,可以用getline(cin,x)

#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}

getline(cin,str)可以接受空格并输出

转载于:https://www.cnblogs.com/varcom/p/4555633.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值