Я хочу, чтобы эта программа считывала данные администратора из файла.Однако программа не будет читать первую строку из файла и вместо этого будет пропущена ко второй строке, в результате чего вторые данные администратора станут первым элементом массива.Если я увеличу размер массива 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/
*/