之前一直在使用C#,其中所有的可能会出现的异常操作,都有Exception来进行,本人也从未进行过深究,但是在C++中就没有这么简洁的使用方式了,只好去尝试使用最原始的解决方案,现整理代码,如下
其实就是一个很简单的将字符串转换成数字的小程序,但是我们在编写程序的时候一定要注意程序的鲁棒性,也即在危险情况下,系统能否正常运行,也即,需要考虑到系统真正运行时可能遇到的种种问题:诸如非法输入,或者int溢出等等
///
文件描述:将字符串转换成数字
///
#include<iostream>
using namespace std;
#define OVERFLOW -1
#define ILLEGAL -2
int StrtoInt( char* Str)
{
const char* p=Str;
int total=0;
try
{
do
{
total*=10;
if(*p-'0'<0||*p-'0'>9)
{
throw ILLEGAL;
}
total+=*p-'0';
if(total<0)
{
throw OVERFLOW;
}
*p++;
}while(*p);
}
catch(int& value)
{
if(value==ILLEGAL)
{
cout<<"抱歉非法输入\n";
}
else if(value==OVERFLOW)
{
cout<<"抱歉,溢出错误\n";
}
return -1;
}
return total;
}
int main()
{
char str_input[100]={0};
cout<<"请输入要转换的字符串\n";
cin>>str_input;
cout<<"转换结果是:"<<StrtoInt(str_input)<<endl;
return 0;
}
其实就是一个很简单的将字符串转换成数字的小程序,但是我们在编写程序的时候一定要注意程序的鲁棒性,也即在危险情况下,系统能否正常运行,也即,需要考虑到系统真正运行时可能遇到的种种问题:诸如非法输入,或者int溢出等等