以std :: invalid_argument类型的未捕获异常终止:stoi:无转换(lldb)

时间:2017-08-24 14:23:13

标签: c++ string

我想将一个字符转换为整数并计算其频率但我收到此错误!我正在使用XCODE。

以std :: invalid_argument类型的未捕获异常终止:stoi:无转换。

#include <iostream>

int main(int argc, const char * argv[]) {
std::string s;
std::cin>>s;

int a[27];
for(int i=0;i<s.length();i++)
{
    int c;
    c=std::stoi(&s[i]);
    a[c]++;
}
for(int i=0;i<27;i++)
    std::cout<<a[i];

return 0;

}

1 个答案:

答案 0 :(得分:0)

首先检查它的alpha字符,然后将字符转换为小写然后再转换为'a',这样你就得到0-25的值。

if (isalpha(s[i]))
{
    c= tolower(s[i]) - 'a';
    a[c]++;
}

此外,您必须初始化数组a,因为它是立即

int a[26] = { 0 };

如果你想打印结果

for(unsigned int i=0;i<(sizeof(a) / sizeof(a[0]));i++)
{
    std::cout << a[i];
}

<强> Here is the example.