seekg()与tellg()用法详解

seekg()与tellg()用法详解对输入流操作:seekg()与tellg()对输出流操作:seekp()与tellp()下面以输入流函数为例介绍用法:seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是:ios::beg:表示输入流的开始位置ios::cur:表示输入流的当前位置ios::end:表示输入流的结束位置tellg()函数不需要带参数,它返回当前定位指针的位置,也代表着输入流的大小。假设

大家好,又见面了,我是你们的朋友全栈君。

对输入流操作:seekg()与tellg()
对输出流操作:seekp()与tellp()

下面以输入流函数为例介绍用法:
seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。
对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是:

  • ios::beg:表示输入流的开始位置
  • ios::cur:表示输入流的当前位置
  • ios::end:表示输入流的结束位置

tellg()函数不需要带参数,它返回当前定位指针的位置,也代表着输入流的大小。

假设文件test。txt为以下内容:

hello,my world
name:hehonghua
date:20090902

程序为:

#include <iostream>
#include <fstream>
#include <assert.h>

using namespace std;
int main()
{
    ifstream in("test.txt");
    assert(in);
   
    in.seekg(0,ios::end);       //基地址为文件结束处,偏移地址为0,于是指针定位在文件结束处
    streampos sp=in.tellg();  //sp为定位指针,因为它在文件结束处,所以也就是文件的大小
    cout<<"file size:"<<endl<<sp<<endl;

    in.seekg(-sp/3,ios::end);  //基地址为文件末,偏移地址为负,于是向前移动sp/3个字节
    streampos sp2=in.tellg();
    cout<<"from file to point:"<<endl<<sp2<<endl;

    in.seekg(0,ios::beg);        //基地址为文件头,偏移量为0,于是定位在文件头
    cout<<in.rdbuf();             //从头读出文件内容
    in.seekg(sp2);

    cout<<in.rdbuf()<<endl; //从sp2开始读出文件内容

    return 0;
}

则结果输出:

file size:
45
from file to point:
30
hello,my world
name:hehonghua
date:20090902

date:20090902

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135200.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • R语言安装软件包[通俗易懂]

    R语言安装软件包[通俗易懂]R语言安装软件包1打开RGui.exe,执行“`install.packages(“softwarename”)“`,安装成功后会提示“`Thedownloadedbinarypackagesarein…“`,给出了程序包存放路径2选择程序包,点击“`Installpackage(s)fromlocalfiles…“`,选中路径里面下载好的程序包,会出现“`successfullyunpacked“`的提示3命令及执行结果示例1打开RGui.exe,

    2022年6月27日
    65
  • [python]解析通达信盘后数据获取历史日线数据[通俗易懂]

    [python]解析通达信盘后数据获取历史日线数据[通俗易懂]转自:http://bbs.pinggu.org/forum.php?mod=viewthread&tid=4804415&page=1平时我们在做离线的模型回溯测试时候,需要历史的k线数据。可是通达信的日线数据如下:日线数据在通达信的安装目录:vipdoc\sh\lday下面本地的通达信是没有开放api和外部的自己的交易回溯测试…

    2022年7月24日
    105
  • Kubernetes基础一[通俗易懂]

    Kubernetes基础一[通俗易懂]一、K8S的架构介绍1.1Docker原理:依赖于镜像,容器之间隔离使用cgroup+namespace实现隔离的;1.2K8S的架构介绍了解K8S之前需要掌握DockerKubernetes设计之初就是为了管理,调度容器技术;是google开发的一套开源的容器化编排技术;业界还有其他公司的容器编排技术例如Docker-compose,Docker-swarm,Mesos,目前k8s使用最广泛。Kubernetes则采用了Pod和Label这样的概念把容器组合成一个个的互相存在依赖关系

    2022年6月25日
    42
  • 解决:VUE同一路由强制刷新页面

    解决:VUE同一路由强制刷新页面解决:VUE同一路由强制刷新页面

    2022年7月11日
    67
  • uml用例图详解_uml模型图

    uml用例图详解_uml模型图用例图的含义由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。其中用例和参与者之间的对应关系又叫做通讯关联(CommunicationAssociation)。用例图的作用用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助开发人员可视化地了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领…

    2022年9月7日
    0
  • micro f1和macro f1_correct score

    micro f1和macro f1_correct score首先,明确一个概念,精确率(Precision)和召回率(Recall)并不是只有在目标检测中才有的,是所有任务涉及到分类的都有。而且P和R是针对于每一类来说的,每一个类别都有自己的准确率和召回率,计算每一个类别时,该样本即为正样本,其他样本统一为负样本来计算。首先,先说F1score,它其实是用来评价二元分类器的度量。F1是针对二元分类的,那对于多元分类器,有没有类似F1score的度量方法呢?那就是这里提到的micro-F1和macro-F1macro-F1…

    2022年10月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号