pta 错误的十进制整数 - C/C++ 异常*

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;
}


```