Ошибка при записи массива структур в бинарный файл C++
Необходимо записать массив структур в бинарный файл.
Структура:
struct Sportsman {
string Name;
string Sport;
int Age;
};
Функция добавления массива в файл:
//Добавление элементов в файл
void FileAdd(vector<Sportsman>& A) {
ofstream File("List.bin", ios::binary); //Открываем файл
File.write((char*)&A, sizeof(A)); //Записываем массив в файл
File.close(); //Закрываем файл
}
Однако, при попытки получить значения из файла и вывести их - Microsoft Visual Studio выводит исключение в xmemory.
Само исключение:
Вызвано исключение по адресу 0x0086B7D2 в StructFile.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xDDDDDDDD.
Код исключения:
// MEMBER FUNCTIONS FOR _Container_base12
inline void _Container_base12::_Orphan_all() noexcept {
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy) { // proxy allocated, drain it
_Lockit _Lock(_LOCK_DEBUG);
for (auto _Pnext = &_Myproxy->_Myfirstiter; *_Pnext; *_Pnext = (*_Pnext)->_Mynextiter) {
(*_Pnext)->_Myproxy = nullptr;
}
_Myproxy->_Myfirstiter = nullptr;
}
#endif // _ITERATOR_DEBUG_LEVEL == 2
}
Это случается при вызове функции вывода. Вот она:
//Вывод значений из файла
void FilePrint(int N) {
vector<Sportsman> buffer(N);
ifstream File("List.bin", ios::binary);
File.read((char*)&buffer, sizeof(buffer)); //Считываем из файла данные в массив
File.close();
//Выводим массив с данными
for (int i = 0; i < N; i++) {
cout << buffer[i].Name << endl;
cout << buffer[i].Age << endl;
cout << buffer[i].Sport << endl << endl;
}
}
Помогите разобраться в чём проблема. Весь код на Pastebin - https://pastebin.com/4Cxza7iX