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}
}
代码分析:
- seekg(),用来设置stream的文件指针位置,如
in.seekg(14)就是将文件指针设置到14位置处(相对begin位置),这里相当于in.seekg(14, ios::beg),但是对于in.seekg(ios::end)却截然不同,如stream3输出为2,这是因为enum seekdir {beg, cur, end},所以当使用ios::cur和ios::end且只有一个参数的时候,会将ios::cur隐式转换为1,ios::end隐式转换为2,所以stream3输出2,stream12输出1,这告诉我们当使用beg, cur, end,为了避免错误,请使用两个参数,如in.seekg(0,ios::end)代替in.seekg(ios::end) - tellg(),没啥好说的,就是返回文件流指针所在位置
声明:我个人特别讨厌:收费专栏、关注博主才可阅读等行为,推崇知识自由分享,推崇开源精神,呼吁你一起加入,大家共同成长进步!
相关文章:
ifstream之seekg/tellg
声明:我个人特别讨厌:收费专栏、关注博主才可阅读等行为,推崇知识自由分享,推崇开源精神,呼吁你一起加入,大家共同成长进步! 在文件读写的时候,一般需要借助fstream来进行文件操作&a…...
OpenCV 01(图像加载与显示)
一、机器视觉 现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision), 简单来说就是研究如何使机器看懂东西。就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传…...
1-Pytorch初始化张量和张量的类型
1-Pytorch初始化张量和张量的类型 1 导入必备库 import torch import numpy as np2 初始化张量 # 初始化张量 t torch.tensor([1,2])#.type(torch.FloatTensor) print(t) print(t.dtype)输出: tensor([1, 2]) torch.int643 创建float型张量 # 创建float型张量…...
诊断网络卡的原因
首先,通过ipconfig和ping命令来诊断。 手头要有一台Windows电脑。在dos窗口下,输入ipconfig,可以查看到本机“手动设置”或者“自动获取”的IP地址。 这里有几种可能性: IP地址和网关地址都正确。(不存在问题…...
100万级连接,爱奇艺WebSocket网关如何架构
说在前面 在40岁老架构师 尼恩的读者社区(50)中,很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近,尼恩指导一个小伙伴简历,写了一个《高并发网关项目》,此项目帮这个小伙拿到 字节/阿里/微…...
当电脑遇到msvcp110.dll丢失怎么办?最新解决方法分享
在使用电脑过程中,我们经常会遇到一些系统文件丢失的问题。其中,msvcp110.dll是Windows操作系统中的一个重要的动态链接库文件,它包含了许多与C运行库有关的函数和类。当系统中缺少或损坏这个文件时,可能会导致一些应用程序无法正…...
微信小程序自动化测试pytest版工具使用方法
-mini https://github.com/zx490336534/pytest-mini 微信小程序自动化测试pytest插件/工具 基于MiniTest进行pytest改造 使用方法 准备测试小程序 根据miniprogram-demo项目介绍运行一次项目 成功运行后关闭 安装&更新 pip install pytest-mini --upgrade引入插件…...
React 与 TS 结合使用时的技巧总结
使用 TS 泛型来定义通用参数 有些时候会遇到有些业务页面结构是通用的,只是传入页面组件的参数略有不同,这样我们可以使用 TS 的泛型来定义通用参数。具体的实例如下: type GenericPropsData<T> {items: T[];onClick: (value: T) &g…...
【深入解析spring cloud gateway】07 自定义异常返回报文
Servlet的HttpResponse对象,返回响应报文,一般是这么写的,通过输出流直接就可以将返回报文输出。 OutputStream out response.getOutputStream(); out.write("输出的内容"); out.flush();在filter中如果发生异常(例如…...
如何写一个sh脚本将一个本地文件通过 scp命令上传到远程的 centos服务器?
如何写一个sh脚本将一个本地文件通过 scp命令上传到远程的 centos服务器? 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 示例一:从本地复制文件到远程计算机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进行数据备份的时候,发现由于数据库连接数目过多导致连接锁定,这种情况在多人协同开发的场景中很常见。当然我这里也因为多个应用使用了数据库连接,所以出现了Too Many Connections。 可能是超过最大连接数了。 1、进入Navicat…...
知识储备--基础算法篇-矩阵
2.矩阵 2.1第54题螺旋矩阵 第一题上来就跪了,看了官方答案感觉不是很好理解,找了一个比较容易理解的。 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 动作测试(发送邮件测试) 四、问题总结 4.1 邮件发送…...
eclipse链接MySQL数据库
在MySQL官网下载驱动 MySQLhttps://www.mysql.com/cn/点击下载: 页面滚动到最下方选择社区版: 选择Java版本: 接下来,需要选择操作系统,我们选择平台独立: eclipse 接下来,我们打开eclipse,新建…...
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存储的数据发生变化时,会触发Window对象的storage事件,我们可以监听该事件并指定事件处理函数,当其他页面中的localStorage或 sessionStorage中保存的数据发生改变时,就会执行事件处理函数。 监听storage事件的…...
GO语言网络编程(并发编程)runtime包
GO语言网络编程(并发编程)runtime包 1. runtime包 1.1.1. runtime.Gosched() 让出CPU时间片,重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤,但是你妈让你去相亲,两种情况第一就是你相亲速度非常快,见…...
MR源码解析和join案例
MR源码解析 new Job(): 读取本地文件, xml配置job.start(): 启动线程job的run():线程方法 runTasks(): 传入对应的接口,启动map或者reduceMapTask类的run(): 设置map阶段的参数,初始化任务,创建上下文对象 创建读取器LineRecordReader判断是…...
ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略
ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略 目录 利用LLMs赋能或者结合ML算法进行具体应用的简介...
Dropout、DropConnect、Standout...12种正则化变种,到底该用哪个?一份给炼丹师的避坑指南
Dropout变种全景指南:从理论到实战的12种策略深度解析 当你的神经网络在验证集上表现不佳时,第一个跳入脑海的解决方案是什么?对于大多数从业者来说,Dropout无疑是正则化工具箱中的首选武器。但你是否知道,标准Dropout…...
CVPR2025新星DehazeXL:开源8K去雾数据集与可解释归因图,高分辨率图像处理新范式
1. 高分辨率图像去雾的痛点与DehazeXL的突破 第一次处理8K航拍图像时,我盯着显存不足的报错信息愣了半天——当时用的某知名去雾模型,光是加载81928192的图片就吃掉了48GB显存。这其实是高分辨率图像处理领域的普遍困境:传统方法要么被迫降采…...
ICEM高效建模技巧:从快捷键到多点创建模式
1. ICEM快捷键:让你的建模效率翻倍 刚开始用ICEM建模那会儿,我总被繁琐的鼠标操作折磨得够呛。直到有天发现隔壁工位的同事建模速度比我快三倍,偷师学艺才知道——原来快捷键才是真正的生产力神器。这里分享几个我每天必用的核心快捷键组合&a…...
模型微调加速:OpenClaw对接nanobot的LoRA训练
模型微调加速:OpenClaw对接nanobot的LoRA训练 1. 为什么选择OpenClawnanobot进行模型微调 去年我在尝试用Qwen3-4B模型处理专业领域任务时,发现直接使用基础模型的效果总差强人意。模型要么对专业术语理解不到位,要么生成的回答缺乏领域特性…...
【配电网故障定位】基于改进粒子群算法的配电网故障定位研究附Matlab代码参考文献
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
3大方案解决PyRadiomics跨平台安装难题:从环境诊断到容器化部署
3大方案解决PyRadiomics跨平台安装难题:从环境诊断到容器化部署 【免费下载链接】pyradiomics Open-source python package for the extraction of Radiomics features from 2D and 3D images and binary masks. Support: https://discourse.slicer.org/c/community…...
PvZ Toolkit 技术指南:从游戏修改到体验重塑
PvZ Toolkit 技术指南:从游戏修改到体验重塑 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 价值定位:为什么选择 PvZ Toolkit? 当你在《植物大战僵尸》无尽模式…...
4个关键步骤:全方位掌控BetterJoy让Switch手柄在PC上完美适配
4个关键步骤:全方位掌控BetterJoy让Switch手柄在PC上完美适配 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitco…...
聊聊永磁同步电机里的那点“扰动“破事
两种负载扰动观测器设计思路,pmsm仿真 仿真基于离散模型,观测器设计基于m文件,方便移植到c验证 包含:(1)1.5延时补偿(2)扩张龙伯格扰动观测器(ESO)设计&#…...
突破性全流程AI科研助手:AI-Scientist-v2重塑科学探索范式
突破性全流程AI科研助手:AI-Scientist-v2重塑科学探索范式 【免费下载链接】AI-Scientist-v2 The AI Scientist-v2: Workshop-Level Automated Scientific Discovery via Agentic Tree Search 项目地址: https://gitcode.com/GitHub_Trending/ai/AI-Scientist-v2 …...
