C++ 文件流详解
在 C++ 中,文件处理是一个常见且重要的任务。标准库提供了三种主要的文件流类来处理文件输入和输出:fstream
、ifstream
和 ofstream
。这些类都在 <fstream>
头文件中定义。
一、fstream
类
fstream
是文件流类的基类,既可以用于读操作,也可以用于写操作。它结合了 ifstream
和 ofstream
的功能。如果你需要对同一个文件进行读写操作,fstream
是最佳选择。
1.1 基本用法
#include <iostream>
#include <fstream>
#include <string>int main() {std::fstream file;// 打开文件file.open("example.txt", std::ios::in | std::ios::out | std::ios::app);if (!file) {std::cerr << "Failed to open file." << std::endl;return 1;}// 写入文件file << "Hello, fstream!" << std::endl;// 读取文件std::string line;file.seekg(0); // 移动读指针到文件开始while (getline(file, line)) {std::cout << line << std::endl;}// 关闭文件file.close();return 0;
}
1.2 打开模式
fstream
支持多种打开模式,可以组合使用:
std::ios::in
:以读模式打开文件std::ios::out
:以写模式打开文件std::ios::app
:以追加模式打开文件std::ios::ate
:打开文件并定位到文件末尾std::ios::trunc
:如果文件存在,则清空文件std::ios::binary
:以二进制模式打开文件
二、ifstream
类
ifstream
是输入文件流类,专门用于文件读操作。它继承自 istream
,并添加了文件输入操作的功能。
2.1 基本用法
#include <iostream>
#include <fstream>
#include <string>int main() {std::ifstream file("example.txt");if (!file) {std::cerr << "Failed to open file." << std::endl;return 1;}std::string line;while (getline(file, line)) {std::cout << line << std::endl;}file.close();return 0;
}
2.2 打开模式
std::ios::in
:以读模式打开文件(默认模式)std::ios::binary
:以二进制模式打开文件
三、ofstream
类
ofstream
是输出文件流类,专门用于文件写操作。它继承自 ostream
,并添加了文件输出操作的功能。
3.1 基本用法
#include <iostream>
#include <fstream>int main() {std::ofstream file("example.txt");if (!file) {std::cerr << "Failed to open file." << std::endl;return 1;}file << "Hello, ofstream!" << std::endl;file.close();return 0;
}
3.2 打开模式
std::ios::out
:以写模式打开文件(默认模式)std::ios::app
:以追加模式打开文件std::ios::ate
:打开文件并定位到文件末尾std::ios::trunc
:如果文件存在,则清空文件std::ios::binary
:以二进制模式打开文件
四、总结
fstream
:用于同时读写文件。ifstream
:用于读取文件。ofstream
:用于写入文件。
正确选择和使用这些文件流类,可以有效地处理各种文件输入输出操作。掌握打开模式以及流的基本操作,是进行文件处理的基础。在实际开发中,根据具体需求选择合适的文件流类,可以提高代码的可读性和维护性。
相关文章:
C++ 文件流详解
在 C 中,文件处理是一个常见且重要的任务。标准库提供了三种主要的文件流类来处理文件输入和输出:fstream、ifstream 和 ofstream。这些类都在 <fstream> 头文件中定义。 一、fstream 类 fstream 是文件流类的基类,既可以用于读操作&…...
docker compse简介与安装
目录 1. Docker Compose 简介 2. Docker Compose 安装 2.1 在 Ubuntu 上安装 Docker Compose 2.1.1 通过 apt 安装 2.1.2 使用官方脚本安装最新版本 2.2 在 CentOS 上安装 Docker Compose 2.2.2 使用官方脚本安装最新版本 2.2.3 使用 pip 安装 2.3 在 openEuler 上安装…...
基于深度学习的零样本学习
零样本学习(Zero-Shot Learning, ZSL)是深度学习中的一个前沿研究领域,其目标是在没有见过目标类别的样本的情况下,对这些新类别进行识别或分类。这种方法特别适用于在实际应用中存在大量未标注类别或新类别不断涌现的场景&#x…...
C++——list容器以及手动实现
LIST容器 list概述列表容器属性例子 list函数构造函数默认构造函数:带有元素个数和元素初值的构造函数:范围构造函数:拷贝构造函数:移动构造函数:示例 赋值运算符重载拷贝赋值操作符 (1):移动赋值操作符 (2…...
Win11系统文件资源管理器鼠标右键卡顿解决方法
引用链接: Windows 11文件资源管理器崩溃怎么解决?看看这7个解决办法!...
零基础学Python之 第十八讲 文件读写
当你开始学习Python编程时,文件读写是一个非常基础且重要的技能。本篇博客将引导你从零开始学习如何在Python中进行文件读写操作。 1. 打开文件 在Python中,要操作一个文件,首先需要打开它。使用内置的 open() 函数来打开文件,语…...
检索增强生成(RAG):智能内容生成的新纪元
引言 在大 AI 时代,生成式人工智能(GenAI)模型,尤其是大型语言模型(LLM),已经展现出了令人瞩目的能力。然而,这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增…...
ubuntu2204安装elasticsearch7.17.22
下载安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb.sha512 shasum -a 512 -c elasticsearch-7.17.22-amd64.deb.sha512 su…...
介绍Servlet后端中两种接收参数方式req.getAttributer和req.getParameter的区别
数据来源 getParameter:此方法用于获取客户端发送的请求中携带的参数,通常这些参数是通过HTTP GET或POST请求传递的表单数据。例如,用户填写的用户名和密码等输入信息。getAttribute:该方法用来获取在服务器端通过setAttribute方法…...
Delphi FMX安卓Android播放mp3音频内存流
【笔记:安卓开发JavaDelphi FMX】 Delphi FMX跨平台的MediaPlayer无法播放音频数据流只能打开音频文件播放,但有时候需要直接播放内存流数据而无需生成文件,可以通过把内存流转ByteArray再通过Android平台系统原生的MediaDataSource或ParcelF…...
MapUtils常用方法
1、摘要 MapUtils是一个用于处理Map对象的实用工具类,它提供了许多方便的方法来执行常见的操作,如获取值、设置默认值、合并Map等。本文将介绍MapUtils的常见用法,以帮助你更轻松地处理Map数据。 2、前言 在Java编程中,Map是一…...
自定义PasswordEditText控件,在手机字体应用后,字体样式未发生改变
原来的输入类型inputType为textPassword,现在将 inputType删掉即可...
学习打卡第31天
...
opencascade AIS_TexturedShape源码学习 贴纹理
opencascade AIS_TexturedShape opencascade 贴纹理 前言 //! 该类允许在形状上映射纹理。 //! 显示模式 AIS_WireFrame (0) 和 AIS_Shaded (1) 的行为与 AIS_Shape 中的行为相同, //! 而新模式 2 (包围盒) 和 3 (纹理映射) 扩展了其功能。 //! //! 纹理本身在 (0…...
C# winform 串口读取字节流,MB级别字节流
一、串口读取字节流 在 C# 中使用 Windows Forms (WinForms) 应用程序进行串口通信时,通常会使用 System.IO.Ports 命名空间中的 SerialPort 类。以下是一个简单的示例,展示了如何设置一个串口并读取字节流。 步骤 1: 添加引用 确保你的项目中已经包含…...
创建一个简单的单链表
1.头文件的Slist.h的代码 #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> typedef int SListint; typedef struct Slist//单链表 {SListint data;struct Slist* next; }SL;//尾插 void SlistPushBank(SL*…...
15.1 Zookeeper简介安装及基础使用
1. Zookeeper介绍 1.1 介绍 1.2 应用场景简介 1.3 zookeeper工作原理 1.4 zookeeper特点...
详细说明Java中Map和Set接口的使用方法
Map与Set的基本概念与场景 Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有: 1. 直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢。 2. 二分查找&#x…...
CSS3 scale 适配
Scale适配,在前端开发中,特别是在CSS3中,主要指的是使用scale()函数对元素进行缩放处理,以适应不同的屏幕尺寸或达到特定的视觉效果。以下是对Scale适配的详细介绍: 一、基本概念 scale() 是CSS3中transform属性的一…...
SX_初识GitLab_1
1、对GitLab的理解: 目前对GitLab的理解是其本质是一个远程代码托管平台,上面托管多个项目,每个项目都有一个master主分支和若干其他分支,远程代码能下载到本机,本机代码也能上传到远程平台 1.分支的作用:…...
这才是 PHP 高性能框架 Workerman 的立命之本
大家好,我是码农先森。 在这个大家都崇尚高性能的时代,程序员的谈笑间句句都离不开高性能,仿佛嘴角边不挂着「高性能」三个字都会显得自己很 Low,其中众所皆知的 Nginx 就是高性能的代表。有些朋友可能连什么是高性能都不一定理解…...
Python——记录pip问题(解决下载慢、升级失败问题)
在python开发中,经常需要使用到各种各样的库。 pip又是我们常用的安装工具。但是国外的源下载速度实在太慢,经常导致超时。 有很多朋友刚刚学Python的时候,会来问为什么pip下载东西这么慢啊? 而且pycharm里面下载库也是非常的慢…...
Windows Server 2025 Preview 部署 Ⅰ—— ISO下载和硬件要求
目录 1. 预览版下载2. Windows 服务器的硬件要求2.1安装 Windows Server 2025 虚拟机注意事项2.2 CPU2.3 RAM / Memory2.4 存储 Storage2.5 网络 Network2.6 其他需求 1. 预览版下载 下载网站:https://www.microsoft.com/en-in/evalcenter/download-windows-server…...
AI2-CUDA、CuDNN、TensorRT的详细安装教程
一、查看本机的显卡 首先你要看你的电脑是否有NVIDIA的独立显卡,你可以在设备管理器-显示适配器中查看 点击“开始”--找到“NVIDA Control Panel” 点击帮助--系统信息--组件,查看NVCUDA.DLL对应的产品名称,就可以看住CUDA的版本号 这里的版…...
TCP连接中重复使用了两个相同的端口怎么办
1.检查并避免重复配置: 首先,应该检查系统的配置和应用程序的设置,确保没有错误地将多个服务或进程配置为使用相同的端口号。 使用网络监控工具(如netstat、ss等)来查看当前哪些端口正在被使用。 2.使用端口复用选项…...
如何自定义异常
目录 为什么自定义异常自定义异常的步骤参考资料 为什么自定义异常 自定义异常是指开发者根据应用程序的需求和逻辑,自行定义的异常类。与 Java 提供的标准异常类(如 NullPointerException、IOException 等)不同,自定义异常允许程…...
C++中的依赖注入
目录 1.概述 2.构造函数注入 3.setter方法注入 4.接口注入 5.依赖注入框架 6.依赖注入容器 7.依赖注入框架的工作原理 8.依赖注入的优势 9.总结 1.概述 依赖注入是一种设计模式,它允许我们在不直接创建对象的情况下为对象提供其依赖项;它通过将…...
CSS平面转换-平移
平面转换-平移 属性 transform: translate(X轴移动距离, Y轴移动距离); 取值 像素单位取值百分比(参照盒子自身尺寸计算结果)正负均可 技巧translate()只写一个值表示只沿着X轴移动单独设置X或Y轴距离:translateX()或translateY() 代码 …...
Linux-3:Shell编程——基础语法(0-50%)
目录 前言 一、变量 1.定义变量 2.使用变量 3.修改变量 4.将命令的结果赋值给变量 5.只读变量 6.删除变量 二、传递参数 三、字符串 1.字符串举例 2.统计字符串长度 3.字符串拼接 4.截取字符串 总结 前言 Shell是一种程序设计语言。作为命令语言,它…...
C++ --> string类模拟实现(附源码)
欢迎来到我的Blog,点击关注哦💕 前言: C中STL扮演着极其重要的角色,学习C重中之重的就是学习STL,虽然string不作为containers的其中一员,但是也是值得学习的le类。下面就进行string的模拟实现 string的模拟…...
常州全景网站制作/东莞网络推广平台
从2.0开始Spring Security对服务层的方法的安全有了实质性的改善。他提供对JSR-250的注解安全支持象框架原生的Secured注解一样好。从3.0开始你也可以使用新的基于表达式的注解。你可以应用安全到单独的bean,使用拦截方法元素去装饰Bean声明,或者你可以在整个服务层…...
国学大师网站谁做的/网络公司网络推广服务
Im Shendi,之前使用到JavaFX,感觉... ....(使用 java 自带的 swing 和 awt 比较多 并且已经熟悉) 所以我找了找Eclipse有没有Java自带的swing或者awt的 可视化插件, 进行桌面开发当然是可视化开发更简单,效率更高. 使用Eclipse的WindowBuilder插件可以让我们进行可视化开发.…...
网站建设 教程/百度关键词怎么优化
Arduino开发环境搭建 获取Arduino IDE开发工具 下载地址 :http://arduino.cc/en/Main/Software 可以下载release 版、Beta版和前期版本 Arduino的开发性,支持源码下载 支持的平台有 Windows、MAC OS X、Linux Windows 平台上面 Arduino IDE下载后为zip包…...
设计说明模板300字/怎么做seo关键词优化
目前常用的DEM有90米、30米、12.5米等精度 90米DEM 90米的DEM数据来自于美国航空航天局NASA SRTM C波段的数据,覆盖了全球南北纬60度以内的区域。有两种精度,分别是1角秒和3角秒精度,也因此被称作SRTM1和SRTM3,两者分别对应精度…...
专注于网站营销服务/谷歌google官方下载
1.创建index.jsp页面。新建表单 注意: action 填写 input,这个之后再web.xml配置时要注意对应。 method 提交 postt <body> <form action"input" method "post"> 用户名:<input type "text"…...
老实人做网站/简单网页设计模板html
传送门 **dfs思路:**根据题目的描述,镜像对称,就是左右两边相等,也就是左子树和右子树是相等的。因此采用两个指针p,q分别指向左右两颗子树,在每次递归时候就判断一下当前节点是否相等,不相等则…...