R6-1 错误的十进制整数 - 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; }
时间: 2024-03-07 16:49:27 浏览: 169
检查字符串是否为整数,C++程序
4星 · 用户满意度95%
以下是一个实现了函数toInteger()的参考代码:
```c++
#include <iostream>
#include <string>
using namespace std;
int toInteger(const string& s) {
int n = s.size();
if (n == 0) {
throw "illegal integral format";
}
int sign = 1, start = 0;
if (s[0] == '-') {
sign = -1;
start = 1;
}
int ans = 0;
for (int i = start; i < n; i++) {
if (!isdigit(s[i])) {
throw "illegal integral format";
}
ans = ans * 10 + (s[i] - '0');
}
return sign * ans;
}
int main() {
try {
string s;
cin >> s;
cout << toInteger(s) << endl;
}
catch (const char* s){
cout << s << endl;
}
return 0;
}
```
该函数首先判断字符串是否为空,如果是则抛出异常。然后根据符号位和起始位置,遍历字符串中的每一位,如果有任何一位不是数字,则抛出异常。最后计算出整数的值并返回。在主函数中,我们读入一个字符串并调用toInteger()函数,如果函数抛出异常,则打印错误信息。否则打印转换后的整数值。
阅读全文