我是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
)。
从代码的角度来看,您似乎希望从文件中输入内容,因此seekg
与istream
一起在这里比较合适。
请记住,ifstream
和ofstream
分别是istream
和ostream
的子类型。