int parsed;
parsed = fscanf(file, "\"%d\"", &x);
if (parsed == 0) {
parsed = fscanf(file, "%d", &x);
}
data = std::vector<Student>();
std::vector<Student>().swap(data);
return static_cast<uint32_t>((temp >> 32)^temp);
. В младших битах как раз что вам надо получится и старшие выкинутся.
с
.Можно еще кучу проверок добавить через file.peak - что начинается число, что следующий за ним символ - слеш, что число прочиталось. Но если вы уверены в формате, то вам не надо даже читать строку и разбивать ее руками. ifstream сам прочитает число до слеша.