Почему функция atoi не может конвертировать const char * в int?

Почему в этом коде atoi() Функция не работает должным образом и почему компилятор выдает эту ошибку:

инициализирующий аргумент 1 `int atoi (const char *) ‘

Мой код выглядит следующим образом:

#include <iostream.h>
#include <stdlib.h>
int main()
{
int a;
char b;
cin >> b;
a = atoi(b);
cout << "\na";
return 0;
}

3

Решение

b является char но в atoi() ты должен пройти char * или же const char *так как с ++ является строгим языком проверки типов, следовательно, вы получаете это

Так должно быть cout<<"\n"<<a; не это cout<<"\na" потому что более поздний не будет печатать значение

3

Другие решения

Как вы можете видеть здесь atoi

Atoi получает указатель на символ вместо символа, как вы.
И это имеет смысл, потому что таким образом вы можете применить atoi к «числу» (представленному в строке) с более чем 1 цифрой, например atoi («100»);

int atoi ( const char * str );

В противном случае, если бы это был символ, вы могли бы конвертировать только «0», «1», «2» .. «9».

РЕДАКТИРОВАТЬ: попробуйте этот пример:

#include <iostream>
#include <stdlib.h>
int main()
{
int a;
char b[10];cin >> b;
a = atoi(b);

cout<<"\n"<<a;
return 0;
}
3