我有一个代码,我以字符串格式输入数字(逗号分隔)。我应该将输入字符串转换为整数。我使用
完成了它digit[k] = (digit[k]*10)+std::atoi(line[i]);
但我得到的错误是
jdoodle.cpp: In function 'int main()':
jdoodle.cpp:28:54: error: invalid conversion from 'char' to 'const char*' [-fpermissive]
digit[k] = (digit[k]*10)+std::atoi(line[i]);
完整的程序
#include <iostream>
#include<cstdlib>
using namespace std;
int main() {
char line[1024];
int digit[1024],two[1024],k=0,m=0,temp1=0,avg=0;
for(int i=0;i<1024;i++)
{
digit[i]=0;
}
cout << "Enter a line of string: ";
cin.getline(line, 1024);
for(int i = 0; line[i]!='\0'; ++i)
{
if((line[i]>='a'&& line[i]<='z') || (line[i]>='A'&& line[i]<='Z'))
{
cout<<"\nInvalid input";
return 0;
}
else if(line[i]>='0' && line[i]<='9')
{
digit[k] = (digit[k]*10)+std::atoi(line[i]);
//++digits;
}
else if (line[i]==',')
{
k=k+1;
}
}
for(int j=0;digit[j]!='\0';j++)
{
int temp=digit[j];
while(temp!=0)
{
temp=temp/10;
count=count+1;
}
if(count==2)
{
two[m]=digit[j];
m=m+1;
count=0;
}
}
for(int i=0;two[i]!='\0';i++)
{
total = total+two[i];
temp1=i;
}
avg=total/temp1;
cout << avg;
return 0;
}
答案 0 :(得分:3)
atoi的原型:
int atoi (const char * str);
在这里,您可以看到atoi
需要字符串文字,而不是单个字符。您可以更改代码
digit[k] = (digit[k]*10)+std::atoi(line[i]);
进入
digit[k] = (digit[k]*10)+(line[0] - '0');
修复此错误。这样做基本上是将你的单个字符转换为int,而不使用atoi