Я имею дело с проблемой файлов в C ++, я не могу решить.Я управляю файлом с регистрами и пытаюсь сделать «Sorted Insert», по-испански это «Insercción ordenada», но я не знаю перевода на английский.Я пытаюсь открыть файл в конце и сравнить регистр с регистром, который я хочу вставить в файл.Каждый регистр больше нового перемещается на одну позицию регистра в конец файла.Я записываю новый регистр в правильное положение, когда сравнение возвращает, что новый меньше текущего выбранного.
Моя конкретная проблема в том, что последний регистр в файле читается 2 раза и из-за этого регистрнаписано 2 раза.
Я хотел бы скопировать код, который я написал, но имена на испанском, и код содержит множество фрагментов для управления ошибками и преобразованиями между символами * и структурами ... Этобеспорядок, и это только сбивает нас с толку.
Я думаю, что кто-то был бы в такой же ситуации, я буду благодарен примеры в Интернете или некоторые статьи о том, как использовать seekp и seekg для одного и того же файла.
Большое спасибо!
Более или менее код:
int readPosition, writePosition;
readPosition = // Byte where the last register starts in the file.
writePosition = readPosition + registerSize;
f->seekg(readPosition,ios::beg);
oldReg = new char[registerSize];
f->read(oldReg,registerSize);
f->seekp(writePosition,ios::beg);
while () { // if cadena < new register
// For writing, I need to move the reading pointer after the writing pointer
f->seekg(readPosition + 2*registerSize,ios::beg);
f->write(oldReg,registerSize);
readPosition -= registerSize;
writePosition -= registerSize;
f->seekg(readPosition,ios::beg);
f->seekp(writePosition,ios::beg);
delete oldReg;
oldReg = new char[registerSize];
f->read(oldReg,registerSize);
}
delete oldReg;
f->seekp(writePosition,ios::beg);
f->seekg(writePosition + registerSize,ios::beg);
f->write(newRegister,registerSize);
Это не настоящий код, но то, что делает мой метод.Я хочу, чтобы вы заметили, как я использую seekp () и seekg (), потому что я не уверен в том, как я их использую.У меня было несколько проблем с поиском и поиском, и я заметил, что два указателя очень совпадают.