浅谈C++|文件篇

C++中的文件操作是通过使用文件流来实现的。文件流提供了对文件的输入和输出功能。下面是C++文件操作的基本步骤:

1. 包含头文件:首先,包含 `<fstream>` 头文件,它包含了进行文件操作所需的类和函数。

2

. 进行文件读写操作:使用文件流对象的成员函数进行文件读写操作。例如,使用 `getline()` 函数逐行读取文本内容,使用 `<<` 运算符将数据写入文件。

5. 关闭文件:完成文件操作后,使用文件流对象的 `close()` 函数关闭文件。

以上是C++文件操作的基本流程。在实际应用中,还可以使用文件流对象的其他成员函数来操作文件指针、查询文件状态以及处理错误等。

在进行文件操作时,需要注意错误处理和异常处理。可以使用条件语句和异常处理机制来检查和处理文件操作中的错误情况。

通过掌握C++文件操作的基本步骤和注意事项,你可以读取和写入文件,实现数据的持久化和文件的处理。

. 创建文件流对象:使用文件流类的对象来表示要操作的文件。有两种常用的文件流类:`ifstream`(用于读取文件)和 `ofstream`(用于写入文件),还有一个同时支持读写的 `fstream` 类。

3. 打开文件:使用文件流对象的 `open()` 函数打开文件。在打开文件时,需要提供文件名和打开模式参数,打开模式指定了文件的读写方式(读、写、追加等)。

 引子:

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化。C++中对文件操作需要包含头文件< fstream > 。

一.基本知识: 

1.1文件类型

文件类型分为两种:
1.文本文件–文件以文本的ASCII码形式存储在计算机中。
2二进制文件·文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。

1.2操作文件分类 

 操作文件的三大类:

1. ifstream:读操作     io对应读写

2.ofstream:写操作

3. fstream :读写操作

1.3文件步骤

1.包含头文件
#include <fstream>

2.创建流对象
ofstream ofs;

3.打开文件
ofs.open("文件路径",打开方式);

4.写数据
ofs <<"写入的数据";

5.关闭文件
ofs.close();

1.4文件打开方式

ios.in为读文件而打开文件
ios:out为写文件而打开文件
ios:.ate初始位置:文件尾
ios:.app追加方式写文件
ios::trunc如果文件存在先删除,再创建
ios::binary二进制方式

注意:文件打开方式可以配合使用,利用|操作符例如:用二进制方式写文件ios::binary |ios: : out

 写文件代码实例:

#include <iostream>
#include <fstream>
using namespace std;
void fun() {//1.头文件//2.创建流对象fstream ofs;//3.指定打开方式ofs.open("test.txt", ios::out);//4.写内容ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;//5.关闭文件ofs.close();
}
int main() {fun();return 0;
}

写文件可以用ofstream或 fstream 

读文件代码实例:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void fun() {//1.头文件//2.创建流对象fstream ofs;//3.指定打开方式ofs.open("test.txt", ios::out);//4.写内容ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;//5.关闭文件ofs.close();
}void fun1() {ifstream ofs;ofs.open("test.txt", ios::in);//ofs.is_open()打开失败返回falseif (!ofs.is_open()) {cout << "文件打开失败" << endl;}//读数据// //第一种char buf[1024] = { 0 };//ofs按行输入到buf中,每次循环覆盖上一次while (ofs >> buf) {cout << buf << endl;}//第二种char buf1[1024] = { 0 };//和第一种一样,限定最大的大小while(ofs.getline(buf1, sizeof(buf1)) ){cout << buf1 << endl;}//第三种string buf2;//从ofs输入到buf2中while (getline(ofs, buf2)) {cout << buf2 << endl;}//第四种,不推荐char c;while ((c=ofs.get())!=EOF) {cout << c;}ofs.close();
}
int main() {fun();fun1();return 0;
}

总结:
·读文件可以利用ifstream ,或者ftream类

·利用is_open函数可以判断文件是否打开成功

. close关闭文件

二.二进制读取和写入

代码实例:

#include <iostream>
//1.头文件
#include <fstream>
using namespace std;
class person {
public:int age;const char *name;    //C++要加const,学到了
};void fun() {//2.打开数据流(读写模式)fstream ofs;//3.打开文件ofs.open("erjinzhi.txt", ios::out | ios::binary);//4.写数据person p;p.age = 18;p.name = "tom";ofs.write((const char*)&p,sizeof(person));p.age = 19;p.name = "tony";ofs.write((const char*)&p, sizeof(person));//5.关闭文件ofs.close();
}void read() {//2.打开数据流模式fstream ofs;//3.打开文件ofs.open("erjinzhi.txt", ios::in | ios::binary);if (!ofs.is_open()) {cout << "打开失败" << endl;}//4.读数据person p;ofs.read((char*)&p, sizeof(p));cout << p.age << endl;cout << p.name << endl;ofs.read((char*)&p, sizeof(p));cout << p.age << endl;cout << p.name << endl;ofs.close();
}
int main() {fun();  //写文件read();return 0;
}

ofs.write((const char*)&p,sizeof(person));

ofs.open("erjinzhi.txt", ios::in | ios::binary);

注意这两个函数的用法即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9领域事件

本系列包含以下文章&#xff1a; DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务领域事件&#xff08;本文&#xff09;CQRS 案例项目介绍 # 既然DDD是“领域”驱动&#xff0c;那么我们便不能抛开业务而只讲技术&…

Windows专业版的Docker下载、安装与启用Kubenetes、访问Kubernetes Dashboard

到Docker 官网https://www.docker.com/ 下载windows操作系统对应的docker软件安装 Docker Desktop Installer-Win.exe 2023-09版本是4.23 下载后双击安装 重启windows后&#xff0c;继续安装 接受服务继续安装 解决碰到的Docker Engine stopped 打开 控制面板》程序》启用或关…

软件测试/测试开发丨利用人工智能ChatGPT自动生成PPT

点此获取更多相关资料 简介 PPT 已经渗透到我们的日常工作中&#xff0c;无论是工作汇报、商务报告、学术演讲、培训材料都常常要求编写一个正式的 PPT&#xff0c;协助完成一次汇报或一次演讲。PPT相比于传统文本的就是有布局、图片、动画效果等&#xff0c;可以给到观众更好…

第一百五十四回 如何实现滑动菜单

文章目录 概念介绍实现方法示例代码体验分享 我们在上一章回中介绍了滑动窗口相关的内容相关的内容&#xff0c;本章回中将介绍如何实现 滑动菜单.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的滑动菜单表示屏幕上向左或者向右滑动滑动时弹…

自注意力机制

回顾以下注意力机制&#xff1a; 自注意力机制 Self-Attention的关键点 在于 K ≈ \approx ≈V ≈ \approx ≈Q 来源于同一个X&#xff0c;三者是同源的&#xff0c;通过 W Q W_Q WQ​, W K W_K WK​, W V W_V WV​做了一层线性变换。 接下来步骤和注意力机制一模一样。 …

基于微信小程序的线上教育课程付费商城(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【项目实战】Linux系统下jar包自启动

什么是jar包自启动 在Linux系统中&#xff0c;"jar包自启动"是指通过配置将Java程序打包成可执行的Jar文件&#xff0c;并设置其在系统启动时自动运行。以下是与jar包自启动相关的一些概念&#xff1a; Jar文件&#xff1a;Jar&#xff08;Java Archive&#xff09…

K-最近邻算法

一、说明 KNN算法是一个分类算法&#xff0c;基本数学模型是距离模型。K-最近邻是一种超级简单的监督学习算法。它可以应用于分类和回归问题。虽然它是在 1950 年代引入的&#xff0c;但今天仍在使用。然而如何实现&#xff0c;本文将给出具体描述。 来源&#xff1a;维基百科 …

高速USB转4路RS422串口

基于480Mbps 高速USB转8路串口芯片CH344Q&#xff0c;可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动&#xff0c;也支持使用厂商提供的VCP串口驱动程序&#xff0c;可支持Windows、Linux、Android、macOS等操作系统。因CDC类协议和类驱动的原…

Android 10.0 系统开启和关闭黑白模式主题功能实现

1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

DA3 网站的第10位用户信息读取

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID …

git:一、GIT介绍+安装+全局配置+基础操作

版本管理系统&#xff08;SVN和Git&#xff09;&#xff1a; 集中式版本控制系统&#xff08;SVN&#xff09; SVN是集中式版本控制系统&#xff0c;版本库是集中放在中央服务器的. 工作流程如下: 1.从中央服务器远程仓库下载代码 2.修改后将代码提交到中央服务器远程仓库…

with ldid... /opt/MonkeyDev/bin/md: line 326: ldid: command not found

吐槽傻逼xcode 根据提示 执行了这个脚本/opt/MonkeyDev/bin/md 往这里面添加你brew install 安装文件的目录即可

华为云云耀云服务器L实例评测|如何保障华为云云耀云服务器L实例的安全和性能

引言 云耀云服务器L实例是华为云提供的高性能计算实例&#xff0c;为用户提供稳定可靠的云计算环境。为了保障实例的安全和性能&#xff0c;用户可以通过设置防火墙和安全组策略来限制网络访问和防止恶意攻击。华为云提供了灵活的管理工具&#xff0c;用户可以通过控制台、API…

关于ElementUI之首页导航与左侧菜单实现

目录 一.Mock 1.1.什么是Mock.js 1.2.特点 1.3.安装与配置 1.3.1. 安装mock.js 1.3.2.引入mock.js 1.4.mockjs使用 1.4.1.定义测试数据文件 1.4.2.mock拦截Ajax请求 1.4.3.界面代码优化 二.总线 2.1.是什么 2.2.前期准备 2.3.配置组件与路由关系 2.3.1. 配置组件 …

客户端负载均衡_负载均衡策略

以前的Ribbon有多种负载均衡策略 RandomRule - 随性而为 解释&#xff1a; 随机 RoundRobinRule - 按部就班 解释&#xff1a; 轮询 RetryRule - 卷土重来 解释&#xff1a; 先按照RoundRobinRule的策略获取服务&#xff0c;如果获取服务失败则在指定时间内会进行重试。 Weigh…

北京智和信通亮相2023IT运维大会,共话数智浪潮下自动化运维新生态

2023年9月21日&#xff0c;由IT运维网、《网络安全和信息化》杂志社联合主办的“2023&#xff08;第十四届&#xff09;IT运维大会”在北京成功举办。大会以“以数为基 智引未来”为主题&#xff0c;北京智和信通技术有限公司&#xff08;下文简称&#xff1a;北京智和信通&…

【学习草稿】背包问题

一、01背包问题 图解详细解析 &#xff08;转载&#xff09; https://blog.csdn.net/qq_37767455/article/details/99086678 &#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物…

Kubernetes组件和架构简介

目录 一.概念简介 1.含义&#xff1a; 2.主要功能&#xff1a; 3.相关概念&#xff1a; 二.组件和架构介绍 1.master&#xff1a;集群的控制平面&#xff0c;管理集群 2.node&#xff1a;集群的数据平面&#xff0c;为容器提供工作环境 3.kubernetes简单架构图解 一.概…

Kafka 运维必懂:从原理到调优,看完秒变大佬

1 Kafka 概述 Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统&#xff0c;现已被捐献给 Apache 基金会。 目前 Kafka 已经定位为一个分布式流式处理平台&#xff0c;它以高吞吐、可持久化、可水平扩展、支持流…