题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。
题目比较简单,但是涉及到许多问题,例如非法输入,有正负号,是否为空字符串等等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
//把字符串转换成整数
#include<iostream>
#include<string>
using
namespace
std;
enum
flag{
valid=0,
invalid
};
int
judge=valid;
int
paraInt(string s){
long
num=0;
int
f=1;
if
(s.empty()) judge=invalid;
//判断是否为空字符串
else
{
string::size_type i=0;
if
(s[0]==
'+'
) {
//正负号
i=1;
if
(s.length()==1) judge=invalid;
//不加这步若字符串为"+"会输出0
}
if
(s[0]==
'-'
) {
i=1;
f=-1;
if
(s.length()==1) judge=invalid;
}
for
(i;i<s.length();i++){
//转换
int
temp=s[i]-
'0'
;
if
(temp>=0&&temp<=9)
num=num*10+temp;
else
{
judge=invalid;
break
;
}
}
}
num*=f;
return
static_cast
<
int
>(num) ;
//类型转换
}
int
main(
void
){
string s;
cin>>s;
int
num=paraInt(s);
if
(!judge) cout<<num<<endl;
else
cout<<
"invalid input"
<<endl;
system
(
"pause"
);
return
0;
}
|