seekg()与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
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()相关文件操作相关推荐
- .Net FTP文件上传下载及相关文件操作
public class FtpHelper{string ftpServerIP;string ftpRemotePath;string ftpUserID;string ftpPassword;s ...
- iOS 文件操作 NSFileManager
文章目录 相关知识 相关文件操作 NSFileManager和NSFileHandle 对象等复杂类型的读写操作 参考 相关知识 沙盒机制 每一个iOS应用程序都会为自己创建一个文件系统目录,这个独立 ...
- 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 ...
- Linux中和文件相关的操作
Linux中和文件(/文件夹)相关的操作 1. 文件:删除.复制.移动.创建链接 2. 文件的解压 和 压缩 3. 文件:列举查看.大小查看.个数统计 3.1 `ls`:文件列举查看 3.2 `ls. ...
- Linux C: 文件操作相关的系统调用
一.常见的文件操作相关的系统调用 普通权限的系统调用 函数 说明 int access(char *pathname,int mode) 检查对某个文件的权限 int chdir(const char ...
- Boost:与gz文件相关的操作实例
Boost:与gz文件相关的操作实例 实现功能 C++实现代码 实现功能 与gz文件相关的操作实例,打开,关闭,读写. C++实现代码 #include "zstream.h" # ...
- Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)
一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...
- Windows相关文件、文件夹脚本操作
Windows相关文件.文件夹脚本操作 获取一个文件夹下的所有文件名称 批量创建文件夹 批量重命名文件 批量去除文件名中的空格 批量去除文件名中的括号 强制删除文件夹 获取一个文件夹下的所有文件名称 ...
- android saf 打开指定目录,并操作相关文件
android saf 打开指定目录,并操作相关文件 saf存储访问框架(android 4.4 引入)全称 Storage Access Framework 用户可轻松在其所有首选文档存储提供程序中 ...
最新文章
- springboot-6-整合jdbc
- JS监听手机物理返回键,返回到指定页面
- 【集合论】关系性质 ( 常见的关系的性质 | 关系性质示例 | 关系运算性质 )
- 【Git+Docker】Docker初期学习认识和安装配置详解
- 2012总结--第10篇--工作篇
- keras报错ValueError: No data provided for XXX
- 常用SNS开源交友系统比较
- 关于 stylus的全局变量的配置
- fisco bcos console控制台 调用合约报错 does not exist
- 计算机科学导论3000,计算机网络导论论文_大一计算机科学导论论文_计算机导论论文3000字...
- Javascript实现用户注册验证
- 搜集一些常见国家语言Unicode编码范围
- 单片机74LS164C语言例子,74ls164单片机编程汇总(跑马灯/驱动数码管)
- ps剪贴蒙版教程(ps创建剪贴蒙版步骤)
- 【云原生之Docker实战】使用Docker部署OpenKM文档管理系统
- Hive: Reflect UDF
- 快讯|万博智云HyperMotion云迁移产品在华夏云网云市场上线了
- python setup.py build develop_python setup.py build develop编译出错
- VS2015 更换序列号
- vue中怎么把图片转换成base64字符串 , 以及base64字符串怎么转换成图片路径