一个简单的类型转换实现:C++中字符串String类型转换成整型int类型

最近刚开始自学C++,看到一道面试题:怎么实现字符串转换成int类型的函数,然后试着写了一下

(代码是在VS2017下编译的)


#include "stdafx.h"
#include <iostream>
#include <string>


using namespace std;
int StringToInt(string str);
int CheckNum(char c);
int FinalNum(int digits, int nums[]);


int main()
{
string numString;
cout << "输入一个数字"<<endl;
cin >> numString;
int returnNum = StringToInt(numString);
cout << "您输入的数字是"<<returnNum << endl;
    return 0;
}


int StringToInt(string str) {
int digits=0;
int nums[10];
char *p = &str[0];
while (*p != '\0')
{
nums[digits] = CheckNum(*p);//利用指针遍历字符串中元素并转换成int类型存储到数组中
digits++;
p++;
}
return FinalNum(digits, nums);
}

//将char类型转换为int类型的函数
int CheckNum(char c) {
switch (c)
{
case '0': return 0;break;
case '1': return 1;break;
case '2': return 2;break;
case '3': return 3;break;
case '4': return 4;break;
case '5': return 5;break;
case '6': return 6;break;
case '7': return 7;break;
case '8': return 8;break;
case '9': return 9;break;
default:
break;
}

}

//根据数据位数和数组返回原数据的函数

int FinalNum(int digits,int nums[]) {
switch (digits)
{
case 1:return nums[0];break;
case 2:return nums[0]*10+nums[1];break;
case 3:return nums[0]*100+nums[1]*10+nums[2];break;
case 4:return nums[0]*1000+nums[1]*100+nums[2]*10+nums[3];break;
case 5:return nums[0] * 10000 + nums[1] * 1000 + nums[2] * 100 + nums[3]*10+nums[4];break;
case 6:return nums[0] * 100000 + nums[1] * 10000 + nums[2] * 1000 + nums[3] * 100 + nums[4]*10+nums[5];break;
case 7:return nums[0] * 1000000 + nums[1] * 100000 + nums[2] * 10000 + nums[3] * 1000 + nums[4] * 100 + nums[5]*10+nums[6];break;
case 8:return nums[0] * 10000000 + nums[1] * 1000000 + nums[2] * 100000 + nums[3] * 10000 + nums[4] * 1000 + nums[5] * 100 + nums[6]*10+nums[7];break;
case 9:return nums[0] * 100000000 + nums[1] * 10000000 + nums[2] * 1000000 + nums[3] * 100000 + nums[4] * 10000 + nums[5] * 1000 + nums[6] * 100 + nums[7] * 10 + nums[8];break;
case 10:return nums[0] * 1000000000 + nums[1] * 100000000 + nums[2] * 10000000 + nums[3] * 1000000 + nums[4] * 100000 + nums[5] * 10000 + nums[6] * 1000 + nums[7] * 100 + nums[8]*10+nums[9];break;
default:
return 0;
break;
}
}



猜你喜欢

转载自blog.csdn.net/oneword233/article/details/79923193