Перемещение указателя в файле

Рейтинг: 0Ответов: 0Опубликовано: 14.05.2023

У меня есть файл в котором записаны объекты класса(не важно) и в конце файла записано количество этих объектов 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();
}

Без перемещения числа в начало или записи всех объектов в вектор для последующей перезаписи т.д.

Ответы

Ответов пока нет.