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

C++IO流

文章目录

  • 一、C++IO流体系
  • 二、C++标准IO流
  • 三、C++文件IO流
    • 1.ifstream
    • 2.ofstream

一、C++IO流体系

C++流是指信息从外部输入设备向计算机内部输入,从内存向外部输出设备输出的过程,这种输入输出的过程非常形象地被称为流的概念。IO流指的就是输入输出流。

我们平时对终端控制台的输入输出操作,对文件的输入输出操作以及对字符串的流操作,都属于C++的IO流体系。

C++系统实现了一个庞大的IO流体系,其中ios为父类,其它类都是直接或者间接继承自ios类。其中包括istream文件下的终端IO流、fstream文件下的文件IO流和sstream文件下的字符串IO流。

在这里插入图片描述

二、C++标准IO流

C++标准IO流即istream文件下的终端IO流,C++标准库提供了4个全局流对象:cin、cout、cerr、clog。

  • cin:用来进行标准输入,即数据通过键盘输入到程序中。
  • cout:用来进行标准输出,即数据从内存流向控制台。
  • cerr:用来进行标准错误的输出。
  • clog:用来进行日志的输出。

如果输入的数据类型不是字符型或者字符串型时,用cin输入的话,空格和回车都可以作为数据之间的分隔符,多个数据可以在一行输入,也可以分行输入。

但是如果输入的数据类型时字符型和字符串型时,用cin输入的话,空格和回车符是无法读取的。

三、C++文件IO流

1.ifstream

ifstream对应的是文件的读取操作,我们可以构建ifstream对象来进行文件读取操作,它的构造函数有两个:

一个是无参构造函数,无参构造函数的话需要我们手动调用ifstream类里的open函数来打开一个指定的文件。

还有一个是有参构造函数,需要传递打开文件的文件名(带路径的文件名),以及打开的选项。

在这里插入图片描述

打开的选项有inoutbinaryateapptrunc

  • in:对应文件读取操作,以读取文件的形式打开文件。
  • out:对应文件写入操作,以写入文件的形式打开文件。
  • binary:以二进制形式打开文件。
  • ate:对应文件写入操作,打开文件时文件指针指向文件的末尾。
  • app:对应文件写入操作,在文件末尾追加写入内容。
  • trunc:文件打开以后,文件原来有的内容将被清空。

下面我们演示一下ifstream对象的几种读取文件的方式:

operator>>:
由于ifstream也是继承自ios类的,它也支持流提取方式读取文件内容,这种方式不支持读取空格和换行符:

#include <iostream>
#include <fstream>using namespace std;int main()
{ifstream ifs("Test.cc", ios::in);char ch;while(ifs >> ch){cout << ch;}return 0;
}

get函数:
ifstream对象可以istream类里的get函数来实现对文件内容的读取,get函数是按字节读取,一次读取一个字符,空格和换行符它都能读取到:

#include <iostream>
#include <fstream>using namespace std;int main()
{ifstream ifs("Test.cc", ios::in);char ch;while(ifs){ch = ifs.get();cout << ch;}return 0;
}

2.ofstream

ofstream对应的是文件的写入操作,我们可以构建ofstream对象来进行文件的写入操作,它的构造函数和ifstream基本类似。

在这里插入图片描述

我们演示一下ofstream的写入操作:将上面ifstream的读取操作结合起来,用ifstream读取文件内容,再用ofstream写入到一个新的文件中:

#include <iostream>
#include <string>
#include <fstream>using namespace std;int main()
{ifstream ifs("Test.cc", ios::in);ofstream ofs("copy.cc", ios::out);char ch;while(ifs >> ch){ofs << ch;}return 0;
}

相关文章:

C++IO流

文章目录一、CIO流体系二、C标准IO流三、C文件IO流1.ifstream2.ofstream一、CIO流体系 C流是指信息从外部输入设备向计算机内部输入&#xff0c;从内存向外部输出设备输出的过程&#xff0c;这种输入输出的过程非常形象地被称为流的概念。IO流指的就是输入输出流。 我们平时对…...

交友项目【后端环境搭建】

目录 1&#xff1a;环境搭建 1.1&#xff1a;MYSQL数据库 1.1.1&#xff1a;导入相应的sql 1.2&#xff1a;Linux中的docker-compose方法集中部署 1.2.1&#xff1a;介绍 1.3&#xff1a;IDEA设置 1.3.1&#xff1a;基本要求 1.3.2&#xff1a;设置项目编码格式 1.3.3&…...

大事务问题解决方案

文章目录 大事务引发的问题解决办法少用@Transactional注解将查询(select)方法放到事务外事务中避免远程调用事务中避免一次性处理太多数据非事务执行异步处理总结大事务引发的问题 1、死锁 2、回滚时间长 3、并发情况下数据库连接池被占满 4、锁等待 5、接口超时 6、数据库主…...

python开启局域网传输

python开启局域网传输 1.找自己的IP 在命令提示窗口输入&#xff1a;ipconfig <----找自己的IP地址 2.创建要传输文件的文件夹&#xff08;只允许在该文件夹下访问传输&#xff09; a.复制文件夹路径 b.在命令提示窗口cd打开新创建的文件夹 cd “C:\Users\86151\Desktop…...

病毒丨熊猫烧香病毒分析

作者丨黑蛋 一、病毒简介 病毒名称&#xff1a; 熊猫烧香 文件名称&#xff1a; 40fee2a4be91d9d46cc133328ed41a3bdf9099be5084efbc95c8d0535ecee496 文件格式&#xff1a; EXEx86 文件类型(Magic)&#xff1a; MS-DOS executable 文件大小&#xff1a; 29.30KB SHA256&…...

SparkSQL学习——SparkSQL配置与文件的读取与保存

目录 一、添加依赖 二、配置log4j 三、spark提交jar包 四、读取文件 (一)加载数据 (二)保存数据 1.Parquet 2.json 3.CSV 4.MySql 5.hive on spark 6.IDEA的Spark中操作Hive 一、添加依赖 <properties><project.build.sourceEncoding>UTF-8</proje…...

随想录Day45--动态规划:70. 爬楼梯 (进阶), 322. 零钱兑换, 279.完全平方数

70爬楼梯这道题之前已经做过&#xff0c;是动态规划思想的入门&#xff0c;想要爬上第n层阶梯&#xff0c;看爬上n-1层的方法和n-2层的方法共有多少种&#xff0c;两个相加就是爬上n层阶梯的方法。这里扩展到每次可以爬k层&#xff0c;这样就是一个动态规划问题。因为每次可以爬…...

原理+案例,关于主从延迟,一篇文章给你讲明白!

前言 在生产环境中&#xff0c;为了满足安全性&#xff0c;高可用性以及高并发等方面的需求&#xff0c;基本上采用的MySQL数据库架构都是MHA、MGR等&#xff0c;最低也得是一主一从的架构&#xff0c;搭配自动切换脚本&#xff0c;实现故障自动切换。 上述架构都是通过集群主…...

QT开发笔记(Camera)

Camera 此章节例程适用于 Ubuntu 和正点原子 I.MX6U 开发板&#xff0c;不适用于 Windows&#xff08;需要自行修改 才能适用 Windows&#xff0c;Windows 上的应用不在我们讨论范围&#xff09;! 资源简介 正点原子 I.MX6U 开发板底板上有一路“CSI”摄像头接口。支持正点原…...

从C++的角度讲解C#容器

讲解C#容器的文章网上一搜一大把&#xff0c;作为一名C程序员如何高效学习C#容器呢&#xff0c;其实学语言如果能讲到这点就能触类旁通&#xff0c;举一反三&#xff0c;那效果是最好的问题市面上没有这样的书籍&#xff0c;那就跟着老白来一起从C的角度去讲解C#容器1.List<…...

React组件库实践:React + Typescript + Less + Rollup + Storybook

背景 原先在做低代码平台的时候&#xff0c;刚好有搭载React组件库的需求&#xff0c;所以就搞了一套通用的React组件库模版。目前通过这套模板也搭建过好几个组件库。 为了让这个模板更干净和通用&#xff0c;我把所有和低代码相关的代码都剔除了&#xff0c;只保留最纯粹的…...

c++ atomic

文章目录why atomic?sequentially consistent atomicRelaxed memory modelswhy atomic? 当我们有一片内存空间S,线程A正在往S里写数据,这个时候线程B突然往S中做了操作,导致线程A的操作结果变得不可预知(对线程A来说),这种情况换句话说叫做data race,我们一般的操作时上锁,在…...

要想孩子写作文没烦恼?建议家长这样做

说起语文学习&#xff0c;就不得不提作文。作为语文学习中的重中之重&#xff0c;作文写作一直是压在学生和家长身上的一块“心头大石”。发现很多孩子在写作文时&#xff0c;往往存在四大问题&#xff1a;写不出、不生动、流水账、太空洞。如今&#xff0c;孩子怕写作文&#…...

基于Python的高光谱图像分析教程

1、前言超光谱图像 (HSI) 分析因其在从农业到监控的各个领域的应用而成为人工智能 (AI) 研究的前沿领域之一。 该领域正在发表许多研究论文&#xff0c;这使它变得更加有趣&#xff01; 和“对于初学者来说&#xff0c;在 HSI 上开始模式识别和机器学习是相当麻烦的”&#xff…...

【图神经网络】从0到1使用PyG手把手创建异构图

从0到1用PyG创建异构图异构图创建异构图电影评分数据集MovieLens建立二分图数据集转换为可训练的数据集建立异构图神经网络以OGB数据集为例HeteroData中常用的函数将简单图神经网络转换为异质图神经网络GraphGym的使用PyG中常用的卷积层参考资料在现实中需要对 多种类型的节点以…...

2023美赛春季赛思路分析汇总

将在本帖更新汇总2023美赛春季赛两个赛题思路&#xff0c;大家可以点赞收藏&#xff01; 2023美赛春季赛各赛题全部解题参考思路资料模型代码等全部实时更新&#xff01;第一时间获取全部美赛春季赛相关资料&#xff01; 目前思路整理仅为部分&#xff0c;请大家耐心等待&…...

GPT4国内镜像站

GPT-4介绍GPT-4是OpenAI发布的最先进的大型语言模型&#xff0c;是ChatGPT模型的超级进化版本。与ChatGPT相比&#xff0c;GPT-4的推理能力、复杂问题的理解能力、写代码能力得到了极大的强化&#xff0c;是当前人工智能领域&#xff0c;最有希望实现通用人工智能的大模型。但G…...

代码随想录算法训练营第四十八天| 198 打家劫舍 213 打家劫舍II 337 打家劫舍III

代码随想录算法训练营第四十八天| 198 打家劫舍 213 打家劫舍II 337 打家劫舍III LeetCode 198 打家劫舍 题目: 198.打家劫舍 动规五部曲&#xff1a; 确定dp数组以及下标的含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷…...

飞桨DeepXDE用例验证及评估

在之前发布的文章中&#xff0c;我们介绍了飞桨全量支持业内优秀科学计算深度学习工具 DeepXDE。本期主要介绍基于飞桨动态图模式对 DeepXDE 中 PINN 方法用例实现、验证及评估的具体流程&#xff0c;同时提供典型环节的代码&#xff0c;旨在帮助大家更加高效地基于飞桨框架进行…...

telegram连接本地Proxy连接不上

1.ClashX开启允许局域网连接。 2.重启ClashX和Telegram...

seo排名大师软件好用吗

SEO排名大师软件好用吗&#xff1f;深入解析其优缺点 在当今数字化营销的环境中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为网站提升流量、吸引潜在客户的重要手段。而SEO排名大师软件作为一种工具&#xff0c;是否真的能帮助我们实现目标&#xff1f;本文将深…...

边缘智能部署:AI模型在边缘节点的轻量化改造

边缘智能部署&#xff1a;AI模型在边缘节点的轻量化改造&#x1f4da; 本章学习目标&#xff1a;深入理解AI模型在边缘节点的轻量化改造的核心概念与实践方法&#xff0c;掌握关键技术要点&#xff0c;了解实际应用场景与最佳实践。本文属于《云原生、云边端一体化与算力基建&a…...

媒体查询、事件绑定、对象拷贝等知识点总结

一、媒体查询&#xff08;CSS3 响应式设计&#xff09;1. 基本语法cssmedia 媒体类型 and (媒体特性) {/* CSS 规则 */ }2. 常用媒体类型值说明screen电脑屏幕、平板、手机等print打印机all所有设备&#xff08;默认&#xff09;3. 常用媒体特性特性说明max-width最大宽度&…...

Android设备指纹采集指南:从get_token协议看短视频SDK如何生成唯一设备ID

Android设备指纹生成机制深度解析&#xff1a;从基础原理到合规实践 在移动应用生态中&#xff0c;设备指纹技术扮演着至关重要的角色。它不仅关系到用户体验的连贯性&#xff0c;更是风控系统的基础支撑。本文将系统性地剖析Android平台下设备指纹的生成逻辑、技术实现方案以及…...

seo文章生成工具的原理是什么

SEO文章生成工具的原理是什么&#xff1f; 随着互联网的发展&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;在网站运营中的重要性愈加凸显。在这个过程中&#xff0c;SEO文章生成工具逐渐成为许多网站管理者的利器。这些工具究竟是如何运作的呢&#xff1f;本文将详细解…...

LeetCode 热题 100(每日两题)-Day2

坚持打卡第二天&#xff01;昨天的哈希表大显神威&#xff0c;今天我们将继续探索哈希集合的妙用&#xff0c;并引入数组操作中极其重要的技巧——双指针&#xff08;快慢指针&#xff09;。一、最长连续序列LeetCode 第 128 题&#xff0c;难度中等。这道题的难点在于题目强制…...

AI辅助开发winner1300图像处理:用自然语言描述自动生成并行滤波代码

今天尝试用AI辅助开发一个基于winner1300框架的图像并行处理项目&#xff0c;整个过程比想象中顺利很多。记录下这个用自然语言描述就能生成完整代码的神奇体验。 项目需求分析 我需要实现一个能同时应用高斯模糊和边缘检测滤镜的图像处理工具。核心难点在于如何利用winner1300…...

阿里云百炼Coding Plan 的GLM-5等模型是全参数满血版的吗?显示售罄怎么回事?

模型是满血版&#xff0c;无需担心 阿里云百炼 Coding Plan 中包含的 GLM-5、Qwen3.5-Plus、Kimi K2.5 等模型&#xff0c;均为100%的完整版模型&#xff0c;并非量化阉割版本。 它与按量付费模式的区别仅在于计费方式&#xff08;固定月费 vs 按 Token 扣费&#xff09;&…...

计算机毕业设计:汽车销售数据采集分析系统 Flask框架 requests爬虫 可视化 数据分析 大数据 机器学习 大模型(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝50W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…...

NVMe 2.0 Boot Partitions:解锁高效固件更新的双分区机制

1. 为什么我们需要NVMe 2.0的双启动分区&#xff1f; 想象一下你正在给手机升级系统&#xff0c;突然断电了——传统单分区方案会让设备直接变砖&#xff0c;而NVMe 2.0的双启动分区就像给系统上了双保险。这个设计最初是为了解决企业级SSD在724小时运行时的固件更新难题&#…...