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

Seekp function not being recognized in Xcode, C++

本文关键字:识别 C++ 函数 Xcode Seekp      更新时间:2023-10-16

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

/用户/**/Desktop/Programing/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是否正常工作。

istream没有seekp。您可能是指seekg,或者您想使用ostream(它确实有seekp)。

根据您的代码判断,您似乎想要从文件中输入,因此seekgistream在这里是合适的。

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


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

CCD_ 15和CCD_。fstream可以同时做到这两件事,但如果是用于阅读或写作,请小心。本教程(尤其是关于随机访问的部分)可能会引起您的兴趣。