当前位置: 首页 > news >正文

ifstream之seekg/tellg


声明:我个人特别讨厌:收费专栏、关注博主才可阅读等行为,推崇知识自由分享,推崇开源精神,呼吁你一起加入,大家共同成长进步!


在文件读写的时候,一般需要借助fstream来进行文件操作,常见的操作有seekg()和tellg(),但是这两个函数有一些需要注意的地方,如下:
主要参考:

https://stackoverflow.com/questions/20506771/get-file-size-with-ifstreamseekg-and-tellg
https://stackoverflow.com/questions/28823258/which-of-these-if-the-correct-way-to-use-seekg
https://stackoverflow.com/questions/11714973/istream-seekg-offsets-and-iosend

定义,参考cppreference
seekg: Sets input position indicator of the current associated streambuf object.中文的意思是:设置当前关联streambuf对象的输入位置指示器
tellg: Returns input position indicator of the current associated streambuf object.中文的意思是:返回当前关联streambuf对象的输入位置指示器

首先准备一个test.txt,每行15个字符,共45个字符

ssssssssssssss
aaaaaaaaaaaaaa
dddddddddddddd

测试程序:

#include <iostream>
#include "fstream"
using namespace std;int main() {int size = 0;std::string fileName = "../test.txt";ifstream in(fileName.c_str(), ifstream::in | ifstream::binary);if(in){in.seekg(0,ifstream::end);size = in.tellg();cout <<"********** size stream1*** =" << size << endl;  // ********** size stream1*** =44in.seekg(0,ios::end);size = in.tellg();cout <<"********** size stream2*** =" << size << endl; // ********** size stream2*** =44in.seekg(ios::end);size = in.tellg();cout <<"********** size stream3*** =" << size << endl; // ********** size stream3*** =2in.seekg(10,ios::end);size = in.tellg();cout <<"********** size stream4*** =" << size << endl; //  ********** size stream4*** =54in.seekg(-10,ios::end);size = in.tellg();cout <<"********** size stream5*** =" << size << endl; // ********** size stream5*** =34in.seekg(0,ios::beg);size = in.tellg();cout <<"********** size stream6*** =" << size << endl; // ********** size stream6*** =0in.seekg(ios::beg);size = in.tellg();cout <<"********** size stream7*** =" << size << endl; // ********** size stream7*** =0in.seekg(14);in.seekg(0, ios::end);size = in.tellg();cout <<"********** size stream8*** =" << size << endl; // ********** size stream8*** =44in.seekg(10);in.seekg(0, ios::cur);size = in.tellg();cout <<"********** size stream9*** =" << size << endl; // ********** size stream9*** =10in.seekg(ios::beg,ios::end);size = in.tellg();cout <<"********** size stream10*** =" << size << endl; // ********** size stream10*** =44in.seekg(ios::beg);in.seekg(ios::end);size = in.tellg();cout <<"********** size stream11*** =" << size << endl; // ********** size stream11*** =2in.seekg(ios::cur);size = in.tellg();cout <<"********** size stream12*** =" << size << endl; // ********** size stream12*** =1}
}

代码分析:

  1. seekg(),用来设置stream的文件指针位置,如in.seekg(14)就是将文件指针设置到14位置处(相对begin位置),这里相当于in.seekg(14, ios::beg),但是对于in.seekg(ios::end)却截然不同,如stream3输出为2,这是因为enum seekdir {beg, cur, end},所以当使用ios::curios::end且只有一个参数的时候,会将ios::cur隐式转换为1ios::end隐式转换为2,所以stream3输出2,stream12输出1,这告诉我们当使用beg, cur, end,为了避免错误,请使用两个参数,如in.seekg(0,ios::end)代替in.seekg(ios::end)
  2. tellg(),没啥好说的,就是返回文件流指针所在位置

声明:我个人特别讨厌:收费专栏、关注博主才可阅读等行为,推崇知识自由分享,推崇开源精神,呼吁你一起加入,大家共同成长进步!


相关文章:

ifstream之seekg/tellg

声明&#xff1a;我个人特别讨厌&#xff1a;收费专栏、关注博主才可阅读等行为&#xff0c;推崇知识自由分享&#xff0c;推崇开源精神&#xff0c;呼吁你一起加入&#xff0c;大家共同成长进步&#xff01; 在文件读写的时候&#xff0c;一般需要借助fstream来进行文件操作&a…...

OpenCV 01(图像加载与显示)

一、机器视觉 现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision), 简单来说就是研究如何使机器看懂东西。就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉&#xff0c;并进一步做图形处理&#xff0c;使电脑处理成为更适合人眼观察或传…...

1-Pytorch初始化张量和张量的类型

1-Pytorch初始化张量和张量的类型 1 导入必备库 import torch import numpy as np2 初始化张量 # 初始化张量 t torch.tensor([1,2])#.type(torch.FloatTensor) print(t) print(t.dtype)输出&#xff1a; tensor([1, 2]) torch.int643 创建float型张量 # 创建float型张量…...

诊断网络卡的原因

首先&#xff0c;通过ipconfig和ping命令来诊断。 手头要有一台Windows电脑。在dos窗口下&#xff0c;输入ipconfig&#xff0c;可以查看到本机“手动设置”或者“自动获取”的IP地址。 这里有几种可能性&#xff1a; IP地址和网关地址都正确。&#xff08;不存在问题&#xf…...

100万级连接,爱奇艺WebSocket网关如何架构

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《高并发网关项目》&#xff0c;此项目帮这个小伙拿到 字节/阿里/微…...

当电脑遇到msvcp110.dll丢失怎么办?最新解决方法分享

在使用电脑过程中&#xff0c;我们经常会遇到一些系统文件丢失的问题。其中&#xff0c;msvcp110.dll是Windows操作系统中的一个重要的动态链接库文件&#xff0c;它包含了许多与C运行库有关的函数和类。当系统中缺少或损坏这个文件时&#xff0c;可能会导致一些应用程序无法正…...

微信小程序自动化测试pytest版工具使用方法

-mini https://github.com/zx490336534/pytest-mini 微信小程序自动化测试pytest插件/工具 基于MiniTest进行pytest改造 使用方法 准备测试小程序 根据miniprogram-demo项目介绍运行一次项目 成功运行后关闭 安装&更新 pip install pytest-mini --upgrade引入插件…...

React 与 TS 结合使用时的技巧总结

使用 TS 泛型来定义通用参数 有些时候会遇到有些业务页面结构是通用的&#xff0c;只是传入页面组件的参数略有不同&#xff0c;这样我们可以使用 TS 的泛型来定义通用参数。具体的实例如下&#xff1a; type GenericPropsData<T> {items: T[];onClick: (value: T) &g…...

【深入解析spring cloud gateway】07 自定义异常返回报文

Servlet的HttpResponse对象&#xff0c;返回响应报文&#xff0c;一般是这么写的&#xff0c;通过输出流直接就可以将返回报文输出。 OutputStream out response.getOutputStream(); out.write("输出的内容"); out.flush();在filter中如果发生异常&#xff08;例如…...

如何写一个sh脚本将一个本地文件通过 scp命令上传到远程的 centos服务器?

如何写一个sh脚本将一个本地文件通过 scp命令上传到远程的 centos服务器&#xff1f; 1.1 背景需求1.2 解决方案1.3 附录1.3.1 scp命令用法与示例1.3.1.1 scp命令用法与解释1.3.1.2 scp 命令用法示例1.3.1.2.1 示例一&#xff1a;从本地复制文件到远程计算机1.3.1.2.2 示例二&a…...

【CMake工具】工具CMake编译轻度使用(C/C++)

目录 CMake编译工具 一、CMake概述 二、CMake的使用 2.1 注释 2.1.1 注释行 2.1.2 注释块 2.2 源文件 2.1.1 共处一室 2.1.2 VIP包房 2.3 私人定制 2.2.1 定义变量 2.2.2 指定使用的C标准 2.2.3 指定输出的路径 2.4 搜索文件 2.3.1 方式1 2.3.2 方式2 2.5 包含…...

用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections

今天用Navicat进行数据备份的时候&#xff0c;发现由于数据库连接数目过多导致连接锁定&#xff0c;这种情况在多人协同开发的场景中很常见。当然我这里也因为多个应用使用了数据库连接&#xff0c;所以出现了Too Many Connections。 可能是超过最大连接数了。 1、进入Navicat…...

知识储备--基础算法篇-矩阵

2.矩阵 2.1第54题螺旋矩阵 第一题上来就跪了&#xff0c;看了官方答案感觉不是很好理解&#xff0c;找了一个比较容易理解的。 class Solution(object):def spiralOrder(self, matrix):""":type matrix: List[List[int]]:rtype: List[int]"""…...

Zabbix -- QQ邮箱报警

目录 一、创建监控项及触发器 1.1创建监控项 1.2 创建监控项的触发器 1.3 测试触发器 二、邮箱媒介设置 2.1 设置报警媒介类型 2.2 创建用户群组和用户 三、动作绑定 3.1 创建动作 3.2 动作操作 3.3 动作测试&#xff08;发送邮件测试&#xff09; 四、问题总结 4.1 邮件发送…...

eclipse链接MySQL数据库

在MySQL官网下载驱动 MySQLhttps://www.mysql.com/cn/点击下载&#xff1a; 页面滚动到最下方选择社区版&#xff1a; 选择Java版本: 接下来&#xff0c;需要选择操作系统&#xff0c;我们选择平台独立&#xff1a; eclipse 接下来&#xff0c;我们打开eclipse&#xff0c;新建…...

ansible 使用roles简单部署LAMP平台

目录 一、了解roles目录 二、基于构建LAMP平台创建roles目录 1、在192.168.115.148创建目录 2、书写php的测试页面 3、编写httpd角色的main.yml文件 4、编写mysql角色的main.yml文件 6、编写lamp的playbook 7、启动剧本 8、访问 一、了解roles目录 在Ansible中&#…...

如何使用Web Storage对页面中数据进行监听?

当使用Web Storage存储的数据发生变化时&#xff0c;会触发Window对象的storage事件&#xff0c;我们可以监听该事件并指定事件处理函数&#xff0c;当其他页面中的localStorage或 sessionStorage中保存的数据发生改变时&#xff0c;就会执行事件处理函数。 监听storage事件的…...

GO语言网络编程(并发编程)runtime包

GO语言网络编程&#xff08;并发编程&#xff09;runtime包 1. runtime包 1.1.1. runtime.Gosched() 让出CPU时间片&#xff0c;重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤&#xff0c;但是你妈让你去相亲,两种情况第一就是你相亲速度非常快&#xff0c;见…...

MR源码解析和join案例

MR源码解析 new Job(): 读取本地文件, xml配置job.start(): 启动线程job的run():线程方法 runTasks(): 传入对应的接口&#xff0c;启动map或者reduceMapTask类的run(): 设置map阶段的参数&#xff0c;初始化任务&#xff0c;创建上下文对象 创建读取器LineRecordReader判断是…...

ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略

ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略 目录 利用LLMs赋能或者结合ML算法进行具体应用的简介...

星链引擎:AI 驱动的全域营销决策自动化系统技术实现

一、引言在当前数字化营销时代&#xff0c;企业面临着前所未有的数据爆炸和决策复杂度。一个典型的全域营销场景中&#xff0c;企业每天需要处理来自多个平台的数百万条用户行为数据&#xff0c;同时还要根据市场变化、竞品动态和用户反馈&#xff0c;实时调整内容策略、发布策…...

Mermaid CLI深度解析:文本驱动图表生成在DevOps与文档自动化中的实践指南

Mermaid CLI深度解析&#xff1a;文本驱动图表生成在DevOps与文档自动化中的实践指南 【免费下载链接】mermaid-cli Command line tool for the Mermaid library 项目地址: https://gitcode.com/gh_mirrors/me/mermaid-cli Mermaid CLI作为Mermaid图表库的命令行接口&am…...

二供泵站设备全生命周期管理系统方案

在城镇居民二次供水管理体系中&#xff0c;泵房分散于各小区及大型建筑&#xff0c;管理部门长期面临“监管盲区、故障滞后、运维成本高”的突出矛盾。由于缺乏统一的远程监控手段&#xff0c;水泵运行状态、进出水压力、水箱液位、变频器参数等关键数据无法实时获取&#xff0…...

AI记忆库CoPaw-Memory:向量检索与结构化存储融合实践

1. 项目概述&#xff1a;当AI学会“记笔记”&#xff0c;一个开源记忆库的诞生最近在折腾AI应用开发的朋友&#xff0c;可能都遇到过同一个痛点&#xff1a;如何让AI记住我们说过的话&#xff1f;无论是构建一个长期陪伴的聊天机器人&#xff0c;还是开发一个能理解复杂上下文的…...

HsMod终极指南:50+功能全面解锁炉石传说模改插件

HsMod终极指南&#xff1a;50功能全面解锁炉石传说模改插件 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架开发的炉石传说模改插件&#xff0c;通过50多项实用…...

手把手教你用YOLOv5训练VisDrone2019数据集:搞定无人机航拍小目标检测

无人机视角下的目标检测实战&#xff1a;YOLOv5与VisDrone2019数据集深度适配指南 无人机航拍图像的目标检测一直是计算机视觉领域的难点与热点。VisDrone2019作为当前最权威的无人机视角数据集之一&#xff0c;包含了丰富的场景变化和极具挑战性的小目标检测任务。本文将带您从…...

MPICH2并行计算环境搭建:从“目标计算机积极拒绝”到畅通无阻的实战排错指南

1. 遇到"目标计算机积极拒绝"时别慌 第一次在MPICH2环境里看到"目标计算机积极拒绝"这个报错时&#xff0c;我正急着跑一个分布式计算任务。命令行里突然蹦出的ERROR:Error while connecting to host让我瞬间头皮发麻——明明昨天还能正常运行的集群&#…...

半导体光刻OPC技术:稀疏模型到网格模型的转换实践

1. 光学邻近效应校正&#xff08;OPC&#xff09;技术演进背景在半导体制造的光刻工艺中&#xff0c;光学邻近效应校正&#xff08;Optical Proximity Correction, OPC&#xff09;是一项至关重要的分辨率增强技术。随着制程节点不断微缩至65nm以下&#xff0c;传统的光学模型面…...

28纳米工艺下SAR ADC架构的核心优势与设计要点

1. SAR ADC架构在28纳米工艺中的核心优势在移动SoC设计中&#xff0c;模数转换器&#xff08;ADC&#xff09;的性能直接影响着整个系统的功耗和面积效率。随着工艺节点演进至28纳米及以下&#xff0c;逐次逼近型&#xff08;SAR&#xff09;ADC架构展现出三大核心优势&#xf…...

从零构建开发者个人主页:技术选型、部署优化与SEO实践

1. 项目概述&#xff1a;一个开发者个人主页的诞生与演进在技术社区里&#xff0c;一个以username/username.github.io命名的仓库&#xff0c;几乎已经成为了开发者个人技术品牌的标准名片。当我看到vassiliylakhonin/vassiliylakhonin.github.io这个项目标题时&#xff0c;脑海…...