Как я могу перевести char c [0] в int - PullRequest
0 голосов
/ 18 апреля 2019

Я прочитал файл с помощью getline и хочу передать char c [0] в int, я получил ошибку.

error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
g[n].chicken = atoi(c[0]);
                       ^

В файле, включенном в assign.cpp: 5: 0: /usr/include/stdlib.h:147:12: ошибка: инициализация аргумента 1 в int atoi (const char *) ’[-fpermissive] extern int atoi (const char * __ nptr)

 24        int g;
 25        string str;
 26        while(getline(file,str)){
 27           
 28           const char* ct = str.c_str();
 29           char c[5];
 30           strcpy(c,ct);
 31        
 32
 33           g = atoi(c[0]);

1 Ответ

0 голосов
/ 18 апреля 2019

Декларация 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;

  }
}
...