c++之旅第十弹——IO流
大家好啊,这里是c++之旅第十弹,跟随我的步伐来开始这一篇的学习吧!
如果有知识性错误,欢迎各位指正!!一起加油!!
创作不易,希望大家多多支持哦!

一.流的概念:
1、流是一种抽象的概念,表示了数据的无结构化传递
2、C++流是指数据从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程。
3、C++有I/O标准类库,用以完成流操作的功能
二.fstream的使用:
1.fstream的作用:
fstream是C++中常用的文件操作类,用于文件操作,位于名为fstream的头文件中,和C语言学过的文件操作作用一样
2.使用fstream类的方法:
(1)、包含头文件fstream,并打开命名空间std或使用时std::fstream;
(2)、使用fstream类来实例化对象,通过对象的成员来进行文件操作
3.常用的成员函数:
(1)open("文件名路径",打开方式)//打开文件
其中打开方式有多种模式,且可以是多种模式的组合,模式有以下示例:
ios::in :打开文件用于读取数据。如果文件不存在,则打开出错。
los::out :打开文件用于写入数据。如果文件不存在,则新建该文件;如果文件原来就存在,则打开时清除原来的内容。
ios::app :打开文件,用于在其尾部添加数据。如果文件不存在,则新建该文件。
ios::ate :打开一个已有的文件,并将文件读指针指向文件末尾。如果文件不存在,则打开出错。
ios::trunc :打开文件时会清空内部存储的所有数据,单独使用时与ios:out相同.
ios::binary :以二进制方式打开文件。若不描定此模式,则以文本模式打开。
ios::in|ios::out :打开已存在的文件,既可读取其内容,也可向其写入数据。文件刚打开时,原有内容保持不变,如果文件不存在,则打开出错。
ios::in|ios::out|ios::trunc :打开文件,既可读取其内容,也可向其写入数据,如果文件本来就存在,则打开时清除原来的内容;如果文件不存在,则新建该文件。
(2)close()
关闭文件
(3)is_open()
判断文件是否打开成功,成功返回1,失败返回0
(4)eof()
判断文件是否到达文件末尾,到了文件末尾返回true,否则false
(5)put(字符)
往文件中写入一个字符
eg:
fstream file;//创建类对象来进行文件操作
file.open("测试文件.txt",ios::out);
file.put('a');
char c='b';
file.put(c);
(6)get()
char ch;
file.get(ch);//读取一个字符,赋值给ch
ch=file.get();//读取一个字符,赋值给ch
get(char*str,int num,char delim='\n');//读取num个字符,赋值给str,或在这个期间读到了'\n'结束
注意:最后一条用法和getline类似:getline(char*str,int num,char delim='\n');//读取num个字符,赋值给str,或在这个期间读到了'\n'结束
但是get函数和getline函数是有区别的:相同点是两者都可以读取多个字符,但是get函数在读取到\n时会对这个换行符进行保留,也就是继续使用get函数的话会直接读取到上一个get函数遗留的这个换行符而直接停止读取,再次使用get函数才可以进行下一行字符的读取;而getline函数则是可以直接将这个换行符跳过(遇到后终止读取且将读取位移到下一行处),也就是直接连续使用两个getline函数是可以直接连续读取到两行的内容了,不需要中间使用一个getline来“吃掉”那个换行符。
(7)seekp()或seekg()
用于文件指针的移动:
file.seekp(5,ios::beg);//从文件开头的位置往后偏移5个字符
在这里,数字5表示的是文件指针往后移动5个字节的位置,如果是-5那么就是往前移动5个字节的位置
第二个参数是文件指针从哪里开始移动位置,有三个这种参数的取值:
ios::beg 文件开头 ios::end文件末尾 ios::cur文件指针当前的位置
(8)tellg()或tellp()
用来获取文件指针的移动大小
int len=file.tellg();//获取文件指针相对于文件开头移动了多少
(9)二进制形式读写文件
①write()函数用来写入文件:
write(const char * str,int str_size);
eg写入一个整数:
int a=10;
file.write((const char*)&a,sizeof(int));
②read()读取文件:
read(char * str,int str_size);
eg读取一个整数:
int a;
file.read((char*)&a,sizeof(int));//读取4个字节的整数,赋值给a
三.使用重载运算符<<与>>:
类似于cin和cout,不过cin和cout是作用于内存的,而这个是作用于文件的
fstream file;
int x=0;
file.open("示例.txt",ios::out);
file<<"这是一次测试"<<endl;
file<<x<<endl;
//上面是向文件内分行写入文字和数字
file.close();
file.open("示例.txt",ios::in);
char str[100];
int temp=0;
file>>str>>temp;//从文件读取,注意流的流向,写入时是先写入了字符串,然后写入了数字,所以流先输出数字,也就是变量要放在输出流的右边
cout<<str<<endl<<temp<<endl;
相关文章:
c++之旅第十弹——IO流
大家好啊,这里是c之旅第十弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.流的概念&…...
量化交易:Miniqmt获取可转债数据和交易python代码
哈喽,大家好,我是木头左! 低风险资产除了国债外,还有可转债,兼容有高收益的股性和低风险的债性,号称“下有保底,上不封顶”。 🔍 可转债:金融市场的双面娇娃 可转债&am…...
测试开发之自动化篇 —— 使用Selenium IDE录制脚本!
今天,我们开始介绍基于开源Selenium工具的Web网站自动化测试。 Selenium包含了3大组件,分别为:1. Selenium IDE 基于Chrome和Firefox扩展的集成开发环境,可以录制、回放和导出不同语言的测试脚本。 2. WebDriver 包括一组为不同…...
Django 外键关联数据
在设计数据库的时候,是得需要通过外键的形式将各个表进行连接。 原先的表是这样的 要想更改成这样: 下面是操作步骤: 有两张表是关联的 # 在 models.py 里创建class Department(models.Model):"""部门表""&quo…...
开源与新质生产力
在这个信息技术迅猛发展的时代,全球范围内的产业都在经历着深刻的变革。在这样的背景下,“新质生产力”的概念引起了广泛的讨论。无论是已经成为或正努力转型成为新质生产力的企业,都在寻求新的增长动力和竞争优势。作为一名长期从事开源领域…...
如何将 Windows图片查看器的背景颜色改成浅色(灰白色)?
现在大家基本都在使用Win10系统,我们在双击查看图片时,系统默认使用系统自带的图片(照片)查看器去打开图片。图片查看器的背景色默认是黑色的,如下所示:(因为大家可能会遇到同样的问题ÿ…...
k8s-pod参数详解
目录 概述创建Pod编写一个简单的Pod添加常用参数为Pod的容器分配资源网络相关Pod健康检查启动探针存活探针就绪探针 作用整个Pod参数配置创建docker-registry 卷挂载 结束 概述 k8s中的pod参数详解。官方文档 版本 k8s 1.27.x 、busybox:stable-musl、nginx:stable-alpine3…...
一些计算机网络面试题
TCP建立连接和关闭连接的流程?每个流程的环节? TCP是在传输层的协议,建立的是可靠传输 TCP在传输数据前建立连接是采用三次握手,关闭连接是四次挥手 三次握手:因为目前网络通讯是全双工的,那我假设浏览器…...
transformer - 注意力机制
Transformer 的注意力机制 Transformer 是一种用于自然语言处理任务的模型架构,依赖于注意力机制来实现高效的序列建模。注意力机制允许模型在处理一个位置的表示时,考虑输入序列中所有其他位置的信息,而不仅仅是前面的几个位置。这种机制能…...
三端植物大战僵尸杂交版来了
Hi,好久不见,最近植物大战僵尸杂交版蛮火的 那今天苏音整理给大家三端的植物大战僵尸杂交版包括【苹果端、电脑端、安卓端】 想要下载的直接划到最下方即可下载。 植物大战僵尸,作为一款古老的单机游戏,近期随着B站一位UP主潜艇…...
np.hstack()和np.vstack()函数解释
np.hstack()和np.vstack()函数解释 文章目录 1,np.hstack()1.1,代码1.2,结果 2,np.vstack()2.1,代码2.2,结果 3,np.hstack()和np.vstack()3.1,代码3.2,结果 1,…...
【Linux】进程5——进程优先级
1.进程优先级 1.1.什么是进程优先级 cpu资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上&#x…...
CNN简介与实现
CNN简介与实现 导语整体结构卷积层卷积填充步幅三维卷积立体化批处理 实现 池化层特点实现 CNN实现可视化总结参考文献 导语 CNN全称卷积神经网络,可谓声名远扬,被用于生活中的各个领域,也是最好理解的神经网络结构之一。 整体结构 相较于…...
【AI大模型】Transformers大模型库(五):AutoModel、Model Head及查看模型结构
目录 一、引言 二、自动模型类(AutoModel) 2.1 概述 2.2 Model Head(模型头) 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预…...
Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式
Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式 一、hadoop中修改存储格式,比如从 textfile 转化为 orc 格式,表中的数据的组织形式要重新改变,就要将重新创建新格式的表将原来的数据按照新的格…...
使用汇编和proteus实现仿真数码管显示电路
proteus介绍: proteus是一个十分便捷的用于电路仿真的软件,可以用于实现电路的设计、仿真、调试等。并且可以在对应的代码编辑区域,使用代码实现电路功能的仿真。 汇编语言介绍: 百度百科介绍如下: 汇编语言是培养…...
【Unity】官方文档学习-光照系统
目录 1 前言 2 光照介绍 2.1 直接光与间接光 2.2 实时光照与烘焙光照 2.3 全局光照 3 光源 3.1 Directional Light 3.1.1 Color 3.1.2 Mode 3.1.3 Intensity 3.1.4 Indirect Multiplier 3.1.5 Shadow Type 3.1.6 Baked Shadow Angle 3.1.7 Realtime Shadows 3.1…...
1731. 每位经理的下属员工数量
1731. 每位经理的下属员工数量 题目链接:1731. 每位经理的下属员工数量 代码如下: # Write your MySQL query statement below select a.employee_id as employee_id,a.name as name,count(b.employee_id) as reports_count,round(avg(b.age),0) as av…...
特征筛选LASSO回归封装好的代码、数据集和结果
Gitee仓库地址:特征筛选LASSO回归封装好的代码、数据集和结果 README LassoFeatureSelector_main 这个是主函数文件,在实例化LassoFeatureSelector类时,需要传入下面这些参数: input_train_data_path:输入训练集的路…...
Autosar 通讯栈配置-手动配置PDU及Signal-基于ETAS软件
文章目录 前言System配置ISignalSystem SignalPduFrameISignal到System Signal的mapSystem Signal到Pdu的mapPdu到Frame的mapSignal配置Can配置CanHwFilterEcuC配置PduR配置CanIf配置CanIfInitCfgCanIfRxPduCfgCom配置ComIPduComISignalSWC配置Data mappingRTE接口Com配置补充总…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
