对输入流操作: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

int main()
{
 //得到文件大小:C++方式
 ifstream ifs;
 ifs.open("log.txt");
 assert(ifs.is_open());
 ifs.seekg( 0 , std::ios::end );
 cout<<ifs.tellg()<<endl;
 ifs.close();

// 得到文件大小:C方式
 FILE* fp = fopen("log.txt", "rb");
 assert ( 0 == fseek(fp, 0, SEEK_END));
 unsigned int usize = ftell(fp);
 cout<<usize<<endl;
 fclose(fp);

return 0;
}

转载于:https://www.cnblogs.com/kex1n/archive/2011/01/28/2286423.html

seekg()与tellg()相关文件操作相关推荐

  1. .Net FTP文件上传下载及相关文件操作

    public class FtpHelper{string ftpServerIP;string ftpRemotePath;string ftpUserID;string ftpPassword;s ...

  2. iOS 文件操作 NSFileManager

    文章目录 相关知识 相关文件操作 NSFileManager和NSFileHandle 对象等复杂类型的读写操作 参考 相关知识 沙盒机制 每一个iOS应用程序都会为自己创建一个文件系统目录,这个独立 ...

  3. linux重命名tar命令,linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)...

    文件操作相关命令 文件操作相关命令 1.创建文件夹mkdir 2.创建文件touch 3.移动文件夹mv(类似于剪切) 4.删除rm 5.重命名mv 6.复制cp 7.查看文件(cat.head.ta ...

  4. Linux中和文件相关的操作

    Linux中和文件(/文件夹)相关的操作 1. 文件:删除.复制.移动.创建链接 2. 文件的解压 和 压缩 3. 文件:列举查看.大小查看.个数统计 3.1 `ls`:文件列举查看 3.2 `ls. ...

  5. Linux C: 文件操作相关的系统调用

    一.常见的文件操作相关的系统调用 普通权限的系统调用 函数 说明 int access(char *pathname,int mode) 检查对某个文件的权限 int chdir(const char ...

  6. Boost:与gz文件相关的操作实例

    Boost:与gz文件相关的操作实例 实现功能 C++实现代码 实现功能 与gz文件相关的操作实例,打开,关闭,读写. C++实现代码 #include "zstream.h" # ...

  7. Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

    一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...

  8. Windows相关文件、文件夹脚本操作

    Windows相关文件.文件夹脚本操作 获取一个文件夹下的所有文件名称 批量创建文件夹 批量重命名文件 批量去除文件名中的空格 批量去除文件名中的括号 强制删除文件夹 获取一个文件夹下的所有文件名称 ...

  9. android saf 打开指定目录,并操作相关文件

    android saf 打开指定目录,并操作相关文件 saf存储访问框架(android 4.4 引入)全称 Storage Access Framework 用户可轻松在其所有首选文档存储提供程序中 ...

最新文章

  1. springboot-6-整合jdbc
  2. JS监听手机物理返回键,返回到指定页面
  3. 【集合论】关系性质 ( 常见的关系的性质 | 关系性质示例 | 关系运算性质 )
  4. 【Git+Docker】Docker初期学习认识和安装配置详解
  5. 2012总结--第10篇--工作篇
  6. keras报错ValueError: No data provided for XXX
  7. 常用SNS开源交友系统比较
  8. 关于 stylus的全局变量的配置
  9. fisco bcos console控制台 调用合约报错 does not exist
  10. 计算机科学导论3000,计算机网络导论论文_大一计算机科学导论论文_计算机导论论文3000字...
  11. Javascript实现用户注册验证
  12. 搜集一些常见国家语言Unicode编码范围
  13. 单片机74LS164C语言例子,74ls164单片机编程汇总(跑马灯/驱动数码管)
  14. ps剪贴蒙版教程(ps创建剪贴蒙版步骤)
  15. 【云原生之Docker实战】使用Docker部署OpenKM文档管理系统
  16. Hive: Reflect UDF
  17. 快讯|万博智云HyperMotion云迁移产品在华夏云网云市场上线了
  18. python setup.py build develop_python setup.py build develop编译出错
  19. VS2015 更换序列号
  20. vue中怎么把图片转换成base64字符串 , 以及base64字符串怎么转换成图片路径

热门文章

  1. 值得收藏!这 100 个 Python 实战小项目真棒!
  2. Excel设置根据条件整行变色
  3. Linux 将 /home 目录与 / 根目录磁盘合并
  4. 用python给三年级的娃做了个口算的代码
  5. 小米的澎湃CPU看来已经放弃了?
  6. 一大波七夕表白文案来袭,“数据分析”助你脱单一臂之力
  7. Openlayers4加载WMS地图
  8. Linux下的DHCP固定IP地址
  9. 用PHP模拟登录WAP飞信实现飞信发送
  10. get和post的区别(传参方式)