我是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是否正常工作。
发布于 2016-04-01 17:27:44
在ifstream中,您应该使用seekg()而不是seekp(),因为您希望设置用于读取的位置,而不是用于写入的位置。
ifstream和ofstream只有两个函数中的一个。fstream可以同时做这两件事,但是要注意它是用来读写的。您可能会对This tutorial (特别是关于随机访问的部分)感兴趣。
发布于 2016-04-01 17:28:07
没有用于istream的seekp。您可能指的是seekg,或者您希望使用ostream (它确实有seekp)。
从您的代码判断,您似乎想要来自文件的输入,所以在这里使用带有istream的seekg是合适的。
请记住,ifstream和ofstream分别是istream和ostream的子类型。
https://stackoverflow.com/questions/36352517
复制相似问题