字符串转换为整型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串转换为整型
题⽬:输⼊⼀个表⽰整数的字符串,把该字符串转换成整数并输出。
例如输⼊字符串”-345”,则输出整数-345;
分析:此题看起来,⽐较简单,每扫描到⼀个字符,我们把在之前得到的数字乘以10再加上当前字符表⽰的数字。
这个思路⽤循环不难实现。
但是此题很容易出错,有⼏个地⽅需要注意⼀下。
⼏个需要注意的地⽅:
1、由于整数可能不仅仅之含有数字,还有可能以'+'或者'-'开头,表⽰整数的正负。
如果第⼀个字符是'+'号,则不需要做任何操作;如果第⼀个字符是'-'号,则表明这个整数是个负数,在最后的时候我们要把得到的数值变成负数。
2、如果使⽤的是指针的话,在使⽤指针之前,我们要做的第⼀件是判断这个指针是不是为空。
如果试着去访问空指针,将不可避免地导致程序崩溃。
3、输⼊的字符串中可能含有不是数字的字符。
每当碰到这些⾮法的字符,我们就没有必要再继续转换。
4、溢出问题。
由于输⼊的数字是以字符串的形式输⼊,因此有可能输⼊⼀个很⼤的数字转换之后会超过能够表⽰的最⼤的整数⽽溢出。
代码:
View Code
1 #include <iostream.h>
2 #include <string>
3 #include <stdlib.h>
4using namespace std;
5
6
7int str2Int(string str)
8 {
9if (str.size()==0)
10 {
11 exit(0); //终⽌程序
12 }
13int pos=0,num=0;
14int sign=1;
15if (str[0]=='-')
16 {
17 pos++;
18 sign=-1;
19 }
20else if (str[0]=='+')
21 {
22 pos++;
23 }
24while (pos<str.length())
25 {
26if (str[pos]<'0' || str[pos]>'9')
27 {
28 exit(0);
29 }
30 num=num*10+(str[pos]-'0');
31if (num<0)
32 {
33 exit(0);
34 }
35 pos++;
36 }
37
38return sign*num;
39
40 }
41
42
43void main()
44 {
45string str="23456d";
46int result=str2Int(str);
47 cout<<result<<endl;
48 }。