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 之间的数字。但是,如果您的文件包含十六进制数字,则逻辑会稍微复杂一些,但不会太多。