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.分支的作用:…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
