atoi() - from char to int


char c;
int array[10][10];
while( !plik.eof())
{
getline( plik, text );
int string_l=text.length(); 
character_controler=false;
for(int i=0; i<string_l; ++i)
{
c=napis.at(i);
if(c==' ') continue;
else if(character_controler==false)
{
array[0][nood]=0;
cout<<"nood: "<<nood<< "next nood "<<c<<endl;
array[1][nood]=atoi(c); // there is a problem
character_controler=true;
}
else if(c==',') character_controler=false;
}   
++nood;
}

我不知道为什么atoi()不起作用。编译器错误为:

invalid conversion from `char` to `const char*`

我需要将c转换为 int。

char已经隐式转换为int

array[1][nood] = c;

但是,如果您打算将字符'0'转换为 int0,则必须利用C++标准要求数字是连续的事实。从 [lex.charset]:

在两者中 源和执行基本字符集,上面十进制列表中0后每个字符的值 数字应比前一个值大 1。

所以你只需要减去:

array[1][nood] = c - '0';

atoi() 需要一个const char*,它映射到一个c string作为参数,你传递的是一个简单的char。因此,错误const char*表示指针,它与char不兼容。

看起来您只需要将一个字符转换为数值,在这种情况下,您可以将atoi(c)替换为c-'0',这将为您提供一个介于 0 和 9 之间的数字。但是,如果您的文件包含十六进制数字,则逻辑会稍微复杂一些,但不会太多。

最新更新