6-5 错误的十进制整数 - C/C++ 异常*
分数 15
作者 海洋饼干叔叔
单位 重庆大学
函数toInteger()负责把一个字符串,比如“-719”转换成整数。当函数发现字符串不符合十进制整数的格式要求,比如包含了非数字母,则应放弃转换并抛出一个异常。请实现该函数,使得下述代码能正常运行:当输入为一个合法整数时,转换并打印该整数;当输入为不合法整数时,打印错误信息。
错误信息应为:
illegal integral format
函数接口定义:
int toInteger(const string& s);
#include <iostream>
using namespace std;
//在此处定义toInteger()函数
int main()
{
try {
string s;
cin >> s;
cout << toInteger(s) << endl;
}
catch (const char* s){
cout << s << endl;
}
return 0;
}
输入样例:
+123
输出样例:
123
错误的整数格式举例:
-+123
1+123
--123
1-123-1
```c++
int toInteger(const string& s) {
int res = 0, sign = 1, i = 0;
if (s[0] == '-') {
sign = -1;
i++;
}
for (; i < s.size(); ++i) {
if (!isdigit(s[i])) {
throw "illegal integral format";
}
res = res * 10 + (s[i] - '0');
}
return sign * res;
}
```