Программа не будет читать первую строку из файла и показывать ошибку what (): stoi при расширении размера массива - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу, чтобы эта программа считывала данные администратора из файла.Однако программа не будет читать первую строку из файла и вместо этого будет пропущена ко второй строке, в результате чего вторые данные администратора станут первым элементом массива.Если я увеличу размер массива admins, он покажет эту ошибку

terminate вызывается после выброса экземпляра 'std :: invalid_argument what (): stoi

#include <iostream>
#include <fstream>

using namespace std;

struct admin
{
  string name, contact;
  int id;
};

struct member
{
  string name, contact;
  int id;
};

void open_file(ifstream &infile)
{
  infile.open("data.txt");
  if(infile.fail())
  {
    cerr << "Failed to open data.txt" << endl;
    exit(0);
  }
}

void read_data(struct admin *admins, ifstream &infile)
{
  string line, testing[3];
  int found, i = 0, j = 0, l = 0;
  while(getline(infile, line))
  {
    for (int x = 0; x <= l; x++)
    {
      testing[x] = ""; //Each line will start without empty space
    }
    l = 0;
    getline(infile, line);
    for(int i = 0; i < 3; i++)
    {
      found = line.find("/");//Total character before "/" was found in a line
      for (int k = 0; k < found; k++)
      {
        testing[l] += line[k];//Adding up each character found before "/"
      }
      l++;
      line.erase(0, found + 1);
    }
    admins[j].name = testing[0];
    admins[j].id = stoi(testing[1]);
    admins[j].contact = testing[2];
    j++;
  }
  infile.close();
}

void output(struct admin *admins)
{
  for (int i = 0; i < 2; i++)
  {
    cout << admins[i].name << " " << admins[i].id << " " << admins[i].contact << endl;
  }
}

int main()
{
  struct admin admins[2];
  ifstream infile;
  open_file(infile);
  read_data(admins, infile);
  output(admins);
  return 0;
}
Files(data.txt)
/*
Edward Anthony Stark/90/800-433-7301/
Bruce Wayne/905/800-433-7300/
*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...