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 之间的数字。但是,如果你的文件包含十六进制数字,逻辑会变得有点复杂,但不会太多。