Zakładam że deklaracja wygląda mniej więcej tak:
struct Student {
std::vector<float> ratings;
};
studentFileSave.write((char*)&ratings[0],ratings.size()*sizeof(float));
To na upartego jeszcze zrobi to co chcesz, ale tutaj:
loadStudentFile.read((char*)&student.ratings,sizeof(float));
std::vector to nie jest tablica. vector to obiekt opakowujący wskaźnik na dynamicznie zaalokowaną tablicę. Ta powyższa linia próbuje nadpisać zawartość obiektu std::vector kilkoma bajtami (które reprezentują floaty), co nie ma sensu, bo tak naprawdę nadpisujesz bebechy vectora, a nie tablicę. Trzeba pisać do tablicy.
Jeśli uprzednio będziesz znał rozmiar vectora i zrobisz coś takiego:
student.ratings.resize(rozmiar);
loadStudentFile.read((char*)&student.ratings[0],student.ratings.size()*sizeof(float));
To to prawdopodobnie zadziała, ale... ogólnie taki sposób serializacji przez pisanie/czytanie innych typów jak bajty i zapisywanie do pliku jest niezalecane i prędzej czy później się na Tobie zemści.