Декларация atoi выглядит следующим образом: int atoi(const char* buffer)
Вам нужно
g = atoi(c);
потому что c - указатель на массив символов. Массив c [5] состоит из 5 байтов. c [0] - первый байт. Один только c интерпретируется компилятором как указатель на первый байт.
Итак, atoi () принимает указатель на массив символов. Вы передали ему первый символ.
Использование std :: getline () для получения пользовательского ввода - отличная идея. Научитесь использовать stringstream для разбора элементов из getline (). Как только вы это сделаете, вы совершите меньше ошибок:
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
int main()
{
int g;
std::ifstream file;
file.open ("example.txt");
std::string str;
while (getline(file, str)) {
std::istringstream stream(str);
stream >> g;
std::cout << "g is " << g << std::endl;
}
}