我正在编写一个将句子转换为数字的程序,我的IDE在“ int = int-int”句子中抛出了一个异常。
该程序适用于Windows x64,我已经在Visual Studio 2017中开发了此程序。我无法尝试任何操作,因为它是如此可怕。
// problematic function
static inline int toPrime(int c) {
if (isalpha(c))
throw "argument c is not an alphabet!";
int a = c - 65;
return PrimeTable(52)[a];
// class PrimeTable(unsigned cnt): store primes in [1, cnt].
}
// call this function
static inline int sti(std::string str) {
std::vector<int> v;
for (int i = 0; i < str.size(); i++) v.push_back(toPrime(str[i]));
return std::accumulate(v.begin(), v.end(), 0);
}
我希望它没有异常(因为它是“ int = int-int” XD),但是我收到了“ Microsoft C ++异常:char”(代码:0x00007FFE31E49129)。
-----在P.M.编辑9:10 ..----- 是的,我意识到这个错误是我现在造成的:/ 而且我意识到我对课程的设计不正确:( 感谢您回答我的错误问题。对不起
答案 0 :(得分:1)
这行(或者我猜这些行)就在这里:
if (isalpha(c))
throw "argument c is not an alphabet!";
如果c
不是以下任何一项,将抛出错误:
如果不是其中之一,则会引发错误。
尝试以下方法:
if (!isalpha(c))
这应该做您想要的,但是我建议您对数据进行清理(即,确保字符串中没有上述任何内容),但是,在将其传递给此函数之前,因为这样做会这些东西中的任何一个现在都会引发错误。