C++ 如何在c+中从文件的末尾移动到开头+;

C++ 如何在c+中从文件的末尾移动到开头+;,c++,C++,我的代码有一个小问题。我一直在尝试从随机访问文件的末尾读取一些信息,然后将光标重新定位到文件的开头。到目前为止,seekg还没有发挥作用。这是我的密码: void main () { AssignData FileOut; AssignData FileIn; ofstream OutData("Data.dat", ios::out | ios::app | ios::binary); ifstream InData("Data.dat", ios::in);

我的代码有一个小问题。我一直在尝试从随机访问文件的末尾读取一些信息,然后将光标重新定位到文件的开头。到目前为止,seekg还没有发挥作用。这是我的密码:

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);
}
void main()
{
分配数据文件;
分配数据文件;
输出数据流(“Data.dat”,ios::out | ios::app | ios::binary);
ifstream InData(“Data.dat”,ios::in);
您可能想要“seekg(ios_base::beg)”:

如果“不起作用”,可以尝试两件事:

1) 检查位置“tellg()”


2) 检查错误状态(eofbit、failbit、badbit)

转到文件末尾:

ifstream is;
is.open( "file.txt", ios::binary );
is.seekg (0, ios::end);
要获取文件的长度(在末尾时),请使用返回get指针绝对位置的

length = is.tellg();
is.seekg (0, ios::beg);
要返回到开始使用,请再次设置put指针的位置

length = is.tellg();
is.seekg (0, ios::beg);

如果您尝试过这一方法,您是否可以更具体地说明哪些不起作用?

您是否可以获得文件的长度(以及长度的定义)使用
tellg
非常依赖于系统,我不会指望它。我尝试了您所说的,并替换了第一个while语句。每当我尝试读取文件时,我都使用代码“InData.read(reinterpret_cast(&FileIn),sizeof(AssignData))。但是文件中的信息不会传递给“FileIn.DisplayFileContent()”将显示最后一行的内容