我想将一个字符转换为整数并计算其频率但我收到此错误!我正在使用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;
}
答案 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. 强>