您好我试图将一个const字符串转换为一个int数组但是当我尝试它时不允许它。我的代码是:
int isRegistered(const char str[]) {
int isbnInt[10], i;
//char isbnArray[10];
//isbnArray = str; ----> something I tried
for (i = 0; i < 10; i++)
{
isbnInt[i] = atoi(str[i]);
cout << isbnInt[i] << endl;
}
}
但是当我尝试编译它时,我收到一条错误,指出“从char转换为const char *的转换无效”
答案 0 :(得分:3)
atoi
调用期望const char *
辩论,当您传递char
时,这就是问题所在。
您可以执行以下操作将字符转换为数字。这会从字符本身中减去0
的ascii值(因为0-9在ascii代码中依次增加。)
isbnInt[i] = str[i] - '0';
答案 1 :(得分:0)
尝试:
for (i = 0; i < 10; i++)
{
isbnInt[i] = str[i] - '0';
cout << isbnInt[i] << endl;
}
atoi将const char*
作为输入而不是单个字符。
答案 2 :(得分:0)
您的代码也可以写成:
for (i = 0; i < 10; i++)
{
char foo = str[i];
isbnInt[i] = atoi(foo);
cout << isbnInt[i] << endl;
}
哪个不行(如你所见); atoi期待一个char *,而不是char。
尝试:
int isbm = atoi(str);
并查看是否符合您的要求。