在Xcode,C ++中无法识别Seekp函数

时间:2016-04-01 09:20:21

标签: c++

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

/ 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是否正常运行。

2 个答案:

答案 0 :(得分:1)

ifstream中,您应该使用seekg()而不是seekp(),因为您要设置阅读位置而不是写入位置。

ifstreamofstream只有两个函数中的一个。 fstream可以同时执行这两项操作,但要注意它是否用于读取或写入。 This tutorial(特别是有关随机访问的部分)可能会引起您的兴趣。

答案 1 :(得分:1)

seekp没有istream。 你可能意味着seekg,或者你想使用ostream代替seekp

根据您的代码判断,您似乎需要来自该文件的输入,因此seekg与您的istream相符合。

请注意,ifstreamofstream分别是istreamostream的子类型。