如何让'read'函数从文件的开头开始?

时间:2016-03-30 09:13:27

标签: c++

我正在尝试读取二进制文件,而我正在使用f_in.read((char(*) &tmp, sizeof(tmp))函数。但是,每次调用此函数时,它都会继续从上一个读取函数停止的位置读取文件。是否可以在每次调用时从文件的开头开始读取函数?

打开pixmap.bin文件:

int main(){

    ifstream f_in;
    f_in.open("Pixmap.bin", ios::binary);

    if (f_in.fail()) {

        cerr<<"Error while opening the file pixmap.bin"<<endl;
        f_in.close();
        exit(EXIT_FAILURE);
    }

我想要使用的函数每次从头开始读取:

void Read_Dimensions(ifstream &f_in, int Dimensions[2]) {

    uint tmp(0);
    for(int i=0; i<2;i++) {

        f_in.read((char*) &tmp, sizeof(tmp));
        Dimensions[i]=tmp;

    }

    }

1 个答案:

答案 0 :(得分:1)

这是相对于文件指针,请尝试在“文件指针”部分阅读此页面: http://www.eecs.umich.edu/courses/eecs380/HANDOUTS/cppBinaryFileIO-2.html

这里的例子是:

int main()
{
  int x;
  streampos pos;
  ifstream infile;
  infile.open("silly.dat", ios::binary | ios::in);
  infile.seekp(243, ios::beg); // move 243 bytes into the file
  infile.read(&x, sizeof(x));
  pos = infile.tellg();
  cout << "The file pointer is now at location " << pos << endl;
  infile.seekp(0,ios::end); // seek to the end of the file
  infile.seekp(-10, ios::cur); // back up 10 bytes
  infile.close();
}

希望能帮到你。