C++ Atoi函数给出了错误

jas*_*son 3 c++ atoi

我有一个包含5个字符的字符串.我想将每个单个字符转换为int,然后将它们相互相乘.这是代码:

int main()
{
    int x;
    string str = "12345";
    int a[5];
    for(int i = 0; i < 5; i++)
    {
        a[i] = atoi(str[i]);
    }
    x = a[0]*a[1]*a[2]*a[3]*a[4];
    cout<<x<<endl;
}
Run Code Online (Sandbox Code Playgroud)

它为atoi的行提供了这个错误:

从'char'无效转换为'const char*'[-fpermissive] |

我怎样才能解决这个问题?谢谢.

fla*_*ian 5

您可以使用:

a[i] = str[i] - '0';

按ASCII字符位置进行数字转换的字符.

  • @JoeDF可能是[EBCDIC](http://en.wikipedia.org/wiki/EBCDIC),其中''J' - 'I'`是_not_`1`(和''Z' - 'A'+ 1 `不是'26`).但是IIRC"1" - "0"== 1`(以及"9" - "0"== 9`)总能得到保证(对于"数字字符"). (3认同)