利用函数将一个整数字符串转换成整数的问题

不清楚哪里出错了
以下是代码部分:

#include<iostream>
using namespace std;
int chnum(char *str)
{
    int i = 0,len,sum=0,k=0;
    len = strlen(str);
    while (str[i] != '\0')
    {
        sum = sum + pow(10, len - i - 1);
        i++;
    }
    return sum;
}
int main()
{
    char str;
    cin >> str;
    cout << chnum(&str);
    return 0;
}

修改如下,供参考:

#include <iostream>
#include <cmath>    //修改
using namespace std;
int chnum(char *str)
{
    int i = 0,len,sum=0,k=0;
    len = strlen(str);
    while (str[i] != '\0')
    {
        sum = sum + (str[i]-'0')*(int)pow(10.0, len - i - 1);//修改
        // sum = sum + pow(10, len - i - 1);
        i++;
    }
    return sum;
}
int main()
{
    char str[10];//修改
    cin >> str;
    cout << chnum(str);//修改   cout << chnum(&str);
    return 0;
}

  • 你字符串里的数字字符,没有处理呀
    sum += (str[i] - '0') * pow(10, len - i - 1);