首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Seekp函数在Xcode、C++中不被识别

Seekp函数在Xcode、C++中不被识别
EN

Stack Overflow用户
提问于 2016-04-01 17:20:21
回答 2查看 1.3K关注 0票数 0

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

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

我做错了什么?

代码如下:

代码语言:javascript
运行
复制
#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函数的编写方式如下:

代码语言:javascript
运行
复制
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是否正常工作。

EN

回答 2

Stack Overflow用户

发布于 2016-04-01 17:27:44

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

ifstreamofstream只有两个函数中的一个。fstream可以同时做这两件事,但是要注意它是用来读写的。您可能会对This tutorial (特别是关于随机访问的部分)感兴趣。

票数 1
EN

Stack Overflow用户

发布于 2016-04-01 17:28:07

没有用于istreamseekp。您可能指的是seekg,或者您希望使用ostream (它确实有seekp)。

从您的代码判断,您似乎想要来自文件的输入,所以在这里使用带有istreamseekg是合适的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36352517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档