atoi() - 从字符到整数
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
转换为整数。
A char
已经可以隐式转换为 int
:
array[1][nood] = c;
但是如果您打算将 char '0'
转换为 int 0
,则必须利用 C++ 标准要求数字是连续的这一事实。来自 [lex.charset]:
In both the
source and execution basic character sets, the value of each character after 0 in the above list of decimal
digits shall be one greater than the value of the previous.
所以你只需要减去:
array[1][nood] = c - '0';
atoi() 需要一个 const char*
,它映射到一个 c string
作为参数,您传递的是一个简单的 char
。因此,错误 const char*
表示一个指针,它与 char
.
不兼容
看起来您只需要将一个字符转换为数值,在这种情况下,您可以将 atoi(c)
替换为 c-'0'
,这将得到一个介于 0 和 9 之间的数字。但是,如果你的文件包含十六进制数字,逻辑会变得有点复杂,但不会太多。
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
转换为整数。
A char
已经可以隐式转换为 int
:
array[1][nood] = c;
但是如果您打算将 char '0'
转换为 int 0
,则必须利用 C++ 标准要求数字是连续的这一事实。来自 [lex.charset]:
In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.
所以你只需要减去:
array[1][nood] = c - '0';
atoi() 需要一个 const char*
,它映射到一个 c string
作为参数,您传递的是一个简单的 char
。因此,错误 const char*
表示一个指针,它与 char
.
看起来您只需要将一个字符转换为数值,在这种情况下,您可以将 atoi(c)
替换为 c-'0'
,这将得到一个介于 0 和 9 之间的数字。但是,如果你的文件包含十六进制数字,逻辑会变得有点复杂,但不会太多。