У меня небольшая проблема с моим кодом. Я пытаюсь прочитать некоторую информацию с конца файла произвольного доступа, а затем переместить курсор в начале файла. Пока seekg не работает. Вот мой код:Как перейти от конца файла к началу в C++
void main()
{
AssignData FileOut;
AssignData FileIn;
ofstream OutData("Data.dat", ios::out | ios::app | ios::binary);
ifstream InData("Data.dat", ios::in);
cout <<"Writing to file" << endl;
if (!OutData)
{
cout<<"File does not exist"<<endl;
exit(1);
}
//read through file
while (InData.read(reinterpret_cast< char * >(&FileIn),sizeof(AssignData)))
{
}
FileIn.DisplayFileContent();//displays the last line in the file
FileOut.setInfo();//allows user to add another record
//Writes record to file
OutData.write(reinterpret_cast< const char * >(&FileOut), sizeof(AssignData));
OutData.close();
cout << endl<<endl;
//Reads the first record from the file
InData.seekg(0);
while (InData.read(reinterpret_cast< char * >(&FileIn), sizeof(AssignData)))
{
// display record
if ((FileIn.getID() != 0) || (FileIn.getID()!=NULL))
{
FileIn.DisplayFileContent();
}
}
InData.close();
_getch();
exit(0);
}
Можно ли получить длину файла (и для какого определения длины) с помощью 'tellg' очень зависит от системы, и я не буду рассчитывать на него. –
Я попробовал то, что вы сказали, и заменил первое заявление. Всякий раз, когда я пытаюсь прочитать из файла, я использую код «InData.read (reinterpret_cast < char * > (& FileIn), sizeof (AssignData))». Однако информация из файла не передается в «FileIn.DisplayFileContent()», который отображает содержимое последней строки – OpalG