我是C ++的新手,我正在尝试使用seekp函数,以便在读取时返回到二进制文件的开头。但是,Xcode编译器似乎无法识别seek函数。编译器给出的错误是:

/Users/**/Desktop/Programming/Project/Project/Project.cpp:191:10:“std::__1::basic_ifstream>”中没有名为“ seekp”的成员

我究竟做错了什么?

这是代码:

#include <iostream>
#include <fstream>
using namespace std;


int main(){


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

    ofstream f_out;
    f_out.open("Pos.txt", ios::binary);

    Handle_File_Errors(f_in, f_out);
    Pixel_Counter(f_in);
    f_in.seekp(0, ios::beg);


    f_in.close();
    f_out.close();

}


Pixel_Counter函数的编写如下:

void Pixel_Counter (ifstream &f_in) {

 uint null;
 int i=0;

 for (i=0; !f_in.eof();i++) {

 f_in.read((char*)&null, sizeof(null));

 }

 cout<<i-6<<endl;
 }


最后,Handle_File_Errors不会对read函数执行任何操作,而只是检查ifstream和ofstream是否正常运行。

最佳答案

seekp没有istream
您可能是seekg的意思,或者您想使用ostream(确实具有seekp)。

从代码的角度来看,您似乎希望从文件中输入内容,因此seekgistream一起在这里比较合适。

请记住,ifstreamofstream分别是istreamostream的子类型。

10-05 23:46