Перемещение указателя в файле
У меня есть файл в котором записаны объекты класса(не важно) и в конце файла записано количество этих объектов int. Как мне переместить курсор в потоке на начало этого int прочитать или изменить его при добавлении нового юзера.
bool DataBase::accountAvailable(const std::string&login)
{
int numberAccounts = -1;
Essence* compareEssence = new Essence;
std::ifstream in(FILE_USERS, std::ios::binary);
in.read(reinterpret_cast<char*>(&numberAccounts),
sizeof(numberAccounts));
if (numberAccounts == 0)
{
in.close();
delete compareEssence;
return true;
}
for (int i = 0; i < numberAccounts; i++)
{
compareEssence->read(in);
if (compareEssence->getLogin() == login)
{
delete compareEssence;
return true;
}
}
delete compareEssence;
return false;
}
void DataBase::addEssence(Essence*user)
{
int numberUser = -1;
std::ifstream in(FILE_USERS, std::ios::binary | std::ios::app);
in.read(reinterpret_cast<char*>(&numberUser), sizeof(numberUser));
in.close();
numberUser++;
std::ofstream out(FILE_USERS, std::ios::binary);
user->write(out);
out.write(reinterpret_cast<char*>(&numberUser), sizeof(numberUser));
out.close();
}
Без перемещения числа в начало или записи всех объектов в вектор для последующей перезаписи т.д.
Источник: Stack Overflow на русском