String to Integer (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