本文主要是介绍VC环境下字符串转整型最终版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
剑指Offer 字符串转化为整型
今天闲来无事,就搜了下这方面的知识,结果发现,这个题就是一个经典的算法题,在剑指Offer里已经详细分析了
直接上代码了,运行可靠,如果大家继续深入理解的话,参考这本书:《剑指Offer——名企面试官精讲典型编程题》
博主:http://blog.csdn.net/cadcisdhht/article/details/36875535
-----------------------------
功能测试(输入字符串表示正数,负数,和零)
边界值测试(最大的正整数,最小的负整数)
特殊输入测试(输入字符串为NULL空指针,输入字符串为空字符串,输入字符串中有非数字字符等)
-----------------------------
#include <iostream>
#include<stdio.h>
using namespace std;
enum Status{valid=0,invalid};
int g_status = valid;
long long strToIntCore(const char* digit,bool minus){long long num = 0;while(*digit!='\0'){if(*digit>='0'&&*digit<='9'){int flag = minus?-1:1;num = num*10+flag*(*digit-'0');if((!minus&&num>0x7FFFFFFF)||(minus&&num<(signed int)0x80000000)){num=0;break;}digit++;}else{g_status = invalid;num=0;break;}}if(*digit=='\0'){g_status = valid;}return num;
}
int strToInt(const char* str){g_status = invalid;long long num = 0;if(str!=NULL&&*str!='\0'){bool minus = false;if(*str=='+'){str++;}else if(*str=='-'){str++;minus = true;}if(*str!='\0'){num = strToIntCore(str,minus);}}return (int)num;
}
{
char num[20];
while(scanf("%s",num)!=EOF){
int n = strToInt(num);
if(g_status==valid){
printf("%d\n",n);
}else{
printf("My God,You Are Wrong\n");
}
}
return 0;
}
这篇关于VC环境下字符串转整型最终版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!