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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spring StoredProcedure for Oracle cursor

    Spring StoredProcedure for Oracle cursorhttp://forum.springsource.org/archive/index.php/t-24915.htmlPDAViewFullVersion:SqlReturnResultSetvs.SqlOutParameter  lvmMay12th,2006,12:33PMIspentsometimeyest

    2022年7月26日
    1
  • python怎么读取excel文件_python如何读取文件夹下的所有文件

    python怎么读取excel文件_python如何读取文件夹下的所有文件python读取excel文件如何进行python编程语言拥有着比较强大的excel读写能力,我们只需要安装xlrd,xlwt这两个库就可以了。那么python读取excel文件如何进行,今天就为大家分享下python读取excel文件的具体操作方法,快来了解下吧!1、首先说明我是使用的python3.5,我的office版本是2010,首先打开dos命令窗,安装必须的两个库,命令是:pip3installxlrdPip3installxlwt2、准备好excel,例如我的一个工作文件,我

    2022年10月2日
    0
  • 电脑DVD光驱变成CD光驱的解决方法

    电脑DVD光驱变成CD光驱的解决方法相信很多朋友都遇到过这个问题:电脑的DVD光驱盘符突然变成CD光驱,然而DVD数据光盘可以正常读取的问题。设备管理器里显示的也是DVD,但我的电脑里就是显示CD驱动器。虽然能正常使用,但看着总是不爽吧。我也遇到过几次,到网上查了查都说了一堆废话,没一个能解决问题的,于是自己研究了下,其实很简单啦。以前优化系统的时候总是会优化一下服务,把不用的都关了,让它不自动启动,其实就是这个服务的问题。    

    2022年5月2日
    737
  • 微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)「建议收藏」

    先来个效果图^_^微信支付功能,个人公众号是没有办法进行开发支付功能的,需要是使用非个人公众号进行注册(如:营业执照等,可以去淘宝购买一个也行大概500左右)公众平台的配置可以参考文档,这里主要是微信官网注册非个体公众号的否需代码操作。(也就是和我们码农相关的操作了)耐心看下面操作,基本上就是复制下面的代码(整个操作也就一会,基础再差也就30分钟搞定支付)^_^1.创建微信小程序2.在微信小程中序创建云函数1).根目录下创建一…

    2022年4月18日
    320
  • win10下安装Ubuntu16.04双系统「建议收藏」

    win10下安装Ubuntu16.04双系统「建议收藏」win10下安装Ubuntu16.04双系统最近由于想体验一下Ubuntu系统,由于虚拟机的体验不是很好,所以便在电脑上试下装双系统。自己也是一步步按着网上的帖子来,由于网上的教程都不是最新的而且有的也不是很全面,导致安装过程中踩坑无数,便想着自己写个新一点全面一点的教程。此教程应该可以解决新手安装过程中遇到的一切基本问题,嘿嘿。

    2022年7月24日
    7
  • 静态网站(博客)生成器(Static-Site-Generators)

    静态网站(博客)生成器(Static-Site-Generators)一.介绍静态网站生成器到底有多少呢?GitHub用户对静态博客生成程序进行了大规模总结,太多了啊,太恐怖,萌新被吓傻了……GitHub地址:https://github.com/pinceladasdaweb/Static-Site-Generators我选了jekyll博客,因为两大代码仓库GitHub(国外)和Coding(国内)都提供免费空间自动构建Jekyll网站!我的…

    2022年7月11日
    39

发表回复

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

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