Работа с файлом. Выдаёт исключение 0xC0000005
"Вызвано исключение по адресу 0x00007FF71866BB15 в Files.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFFFFFFFFFFFFFFFF."
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Person
{
private:
string name;
int age;
int spec;
public:
Person()
{
name = "";
age = 0;
spec = 0;
}
Person(string name, int age, int spec)
{
this->name = name;
this->age = age;
this->spec = spec;
}
void Print()
{
cout << "Name: " << name << "\tAge: " << age << "\tSpecialisation:" << spec << endl;
}
};
int main()
{
vector <Person> vect_of_person;
for (size_t i = 0; i < 2; i++)
{
int age = 0, spec = 0;
string name = "";
cout << "Enter name: ";
cin >> name;
cout << "Enter age: ";
cin >> age;
cout << "Enter spec: ";
cin >> spec;
vect_of_person.push_back(Person(name, age, spec));
}
std::string line = "MyTXTFile.txt";
std::fstream out2(line, fstream::in | fstream::out| fstream::app);
if (out2.is_open())
{
cout << "File is open" << std::endl;
for (size_t i = 0; i < vect_of_person.size(); i++)
{
out2.write((char*)&vect_of_person[i], sizeof(Person));
}
}
else
cout << "File is closed!" << endl;
out2.close();
ifstream fin(line);
if (fin.is_open())
{
Person read;
cout << "File is open" << endl;
while (fin.read((char*)&read, sizeof(Person)))
{
read.Print();
}
}
else
{
cout << "File is closed!" << endl;
}
fin.close();
}
Код создан для добавления объектов класса Person в ТХТ файл, потом выводит все данные из файла, которые там уже были + те, что я добавил. В отладчике смотрел, ничего не понял.
Я пытался найти ошибку, но это либо "нарушение прав доступа при чтении по адресу", либо "нарушение доступа для чтения". Не могу понять, в чём проблема. Знатоки, помогите
Источник: Stack Overflow на русском