【c++】文件操作(文本文件、二进制文件)
文章目录
- 文件操作
- 文本文件
- 写文件
- 读文件
- 二进制文件
- 写文件
- 读文件
文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放;
通过文件可以将数据持久化;
c++中对文件操作需要包含头文件
文件类型分为两种:
1、文本文件——文件以文本的ASCII码形式存储在计算机中;
2、二进制文件——文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。
操作文件的三大类:
1、ofstream:写操作;
2、ifstream:读操作;
3、fstream:读写操作。
文本文件
写文件
写文件步骤:
1、包含头文件
#include
2、创建流对象
ofstream ofs;
3、打开文件
ofs.open(“文件路径”,打开方式);
4、写数据
ofs<<“写入的数据”;
5、关闭文件
ofs.close();
文件打开方式:

注意:
文件打开方式可以配合使用,利用|操作符
例如:用二进制方式写文件ios::binary | iostream::out
#include<iostream>
using namespace std;
//1、包含头文件fstream
#include<fstream>void test()
{//2、创建流对象ofstream ofs;//3、指定打开方式ofs.open("test.txt", ios::out);//4、写内容ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;//5、关闭文件ofs.close();
}int main()
{test();system("pause");return 0;
}
总结:
1、文件操作必须包含头文件fstream;
2、读文件可以利用ofstream,或者fstream类;
3、打开文件时候需要指定操作文件的路径,以及打开方式;
4、利用<<可以向文件中写数据;
5、操作完毕,要关闭文件。
读文件
读文件步骤:
1、包含头文件
#include
2、创建流对象
ifstream ifs;
3、打开文件并判断文件是否打开成功
ifs.open(“文件路径”,打开方式);
4、读数据
四种方式读取
5、关闭文件
ifs.close();
#include<iostream>
using namespace std;
#include<string>
//1、包含头文件fstream
#include<fstream>void test()
{//2、创建流对象ifstream ifs;//3、打开文件并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据(四种方式)//第一种char buf[1024] = { 0 };while (ifs >> buf){cout << buf << endl;}//第二种/*char buf[1024] = { 0 };while (ifs.getline(buf, sizeof(buf))){cout << buf << endl;}*///第三种/*string buf;while (getline(ifs, buf)){cout<<buf<<endl;}*///第四种//char c;//while ((c = ifs.get()) != EOF)//EOF:end of file//{// cout << c;//}//5、关闭文件ifs.close();
}int main()
{test();system("pause");return 0;
}
总结:
1、读文件可以利用ifstream,或者fstream类;
2、利用is_open函数可以判断文件是否打开成功;
3、close关闭文件。
二进制文件
以二进制的方式对文件进行读写操作。
打开方式要指定为 ios::binary
写文件
二进制方式写文件主要利用流对象调用成员函数write
函数原型:ostream& write(const char* buffer,int len)
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数。
#include<iostream>
using namespace std;
//1、包含头文件
#include<fstream>class person
{
public:char m_name[64];//姓名int m_age;//年龄
};void test()
{//2、创建流文件ofstream ofs;//3、打开文件ofs.open("person.txt", ios::out | ios::binary);//也可以23步合并成//ofstream ofs("person.txt", ios::out | ios::binary);//4、写文件person p = { "张三",18 };ofs.write((const char*)&p, sizeof(person));//5、关闭文件ofs.close();
}int main()
{test();system("pause");return 0;
}
总结:
文件输出流对象可以通过write函数,以二进制方式写数据。
读文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char* buffer,int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数。
#include<iostream>
using namespace std;
//1、包含头文件
#include<fstream>class person
{
public:char m_name[64];//姓名int m_age;//年龄
};void test()
{//2、创建流文件ifstream ifs;//3、打开文件,判断文件是否打开成功ifs.open("person.txt", ios::in | ios::binary);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读文件person p;ifs.read((char*)&p, sizeof(person));cout << "姓名:" << p.m_name << "\t" << "年龄:" << p.m_age << endl;//5、关闭文件ifs.close();
}int main()
{test();system("pause");return 0;
}
总结:
文件输入流对象可以通过read函数,以二进制方式读数据。
相关文章:
【c++】文件操作(文本文件、二进制文件)
文章目录文件操作文本文件写文件读文件二进制文件写文件读文件文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放; 通过文件可以将数据持久化; c中对文件操作需要包含头文件 文件类型分为两种: 1、文本文…...
带你了解IP报警柱的特点
IP可视报警柱是一款室外防水紧急求助可视对讲终端。安装在学校、广场、道路人流密集和案件高发区域,当发生紧急情况或需要咨询求助时按下呼叫按钮立即可与监控中心值班人员通话,值班人员也可通过前置摄像头了解现场情况并广播喊话。IP可视报警柱的使用特…...
一步步教你电脑变成服务器,tomcat的花生壳设置(原创)
1,首先你去https://console.oray.com/这网站注册个帐号,如果注册成功它会送你一个免费域名,当然不记得也没关系,你记住你注册的 帐号跟密码,然后下载它的软件(花生壳动态域名6.0正式版)有xp跟li…...
Python 卷积神经网络 ResNet的基本编写方法
ResNet(Residual Network)是由微软亚洲研究院提出的深度卷积神经网络,它在2015年的ImageNet挑战赛上取得了第一名的好成绩。ResNet最大的特点是使用了残差学习,可以解决深度网络退化问题。在传统的深度神经网络中,随着…...
【索引】什么是索引
📔 笔记介绍 大家好,千寻简笔记是一套全部开源的企业开发问题记录,毫无保留给个人及企业免费使用,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔记源码已开源,前往Gitee搜索《…...
【算法刷题】动态规划算法题型及方法归纳
动态规划特点 动态规划中每一个状态一定是由上一个状态推导出来,根据这个特点,可以在状态计算过程中,存储某一条件下的数据,当再次遍历该条件时,直接取该条件对应的数据即可,可以避免重复计算,…...
PolarDB数据库的CSN机制
背景 对postgres数据库熟悉的同学会发现在高并发场景下在获取快照处易出现性能瓶颈,其原因在于PG使用全局数组在共享内存中保存所有事务的状态,在获取快照时需要加锁以保证数据一致性。获取快照时需要持有ProcArraryLock共享锁比遍历ProcArray数组中活跃…...
使用kubeadm 部署kubernetes 1.26.1集群 Calico ToR配置
目录 机器信息 升级内核 系统配置 部署容器运行时Containerd 安装crictl客户端命令 配置服务器支持开启ipvs的前提条件 安装 kubeadm、kubelet 和 kubectl 初始化集群 (master) 安装CNI Calico 集群加入node节点 机器信息 主机名集群角色IP内…...
Servlet笔记(11):Servletcontext对象
1、什么是ServletContext ServletContext是一个全局储存空间,随服务器的生命周期变化, Cookie,Session,ServletContext的区别 Cookie: 存在于客户端的本地文本文件 Session: 存在于服务器的文本文件&#…...
EM算法是什么
EM算法是什么 EM算法(Expectation-Maximization Algorithm)是一种用于参数估计的迭代算法。它常被用于含有隐变量(latent variable)的概率模型中,例如高斯混合模型、隐马尔可夫模型等。 EM算法分为两个步骤ÿ…...
C++---线性dp---方格取数(每日一道算法2023.2.25)
注意事项: 本题属于"数字三角形"和"摘花生"两题的进阶版,建议优先看懂那两道,有助理解。 题目: 输入: 8 2 3 13 2 6 6 3 5 7 4 4 14 5 2 21 5 6 4 6 3 15 7 2 14 0 0 0输出: 67#include <cm…...
《第一行代码》 第八章:应用手机多媒体
一,使用通知 第一步,创建项目,书写布局 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:layout_width"match_parent"android:layout_he…...
C++设计模式(20)——迭代器模式
亦称: Iterator 意图 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此, 集合只是一组对…...
戴尔Latitude 3410电脑 Hackintosh 黑苹果efi引导文件
原文来源于黑果魏叔官网,转载需注明出处。硬件型号驱动情况主板戴尔Latitude 3410处理器英特尔酷睿i7-10510U已驱动内存8GB已驱动硬盘SK hynix BC511 NVMe SSD已驱动显卡Intel UHD 620Nvidia GeForce MX230(屏蔽)无法驱动声卡Realtek ALC236已驱动网卡Realtek RTL81…...
一起Talk Android吧(第五百零四回:如何调整组件在约束布局中的位置)
文章目录 背景介绍调整方法一调整方法二经验分享各位看官们大家好,上一回中咱们说的例子是"解决retrofit被混淆后代码出错的问题",这一回中咱们说的例子是" 如何调整组件在约束布局中的位置"。闲话休提,言归正转, 让我们一起Talk Android吧! 背景介绍…...
ssh连不上实验室的物理机了
实验室的电脑,不能在校外用 ssh 连接了 192.168.1.33 是本地地址,掩码16位,图1。 192.168.1.14 是实验室的另一台可以ssh连接的物理机,掩码16。 192.168.0.1 是无线路由器地址。 192.168.0.2 是192.168.1.14上的虚拟机地址&#…...
selinux讲解
Selinux讲解 1、selinux的概述 Selinux的历史 Linux安全性与windows在不开启防御措施的时候是一样的;同样是C2级别的安全防护安全级别评定: D–>C1–>C2–>B1–>B2–>B3–>A1 D级,最低安全性C1级,主存取控制…...
【计算机网络】TCP底层设计交互原理
文章目录1.TCP底层三次握手详细流程2.TCP洪水攻击介绍和ss命令浅析3.Linux服务器TCP洪水攻击入侵案例4.TCP洪水攻击结果分析和解决方案5.TCP底层四次挥手详细流程1.TCP底层三次握手详细流程 TCP的可靠性传输机制:TCP三次我手的流程 一次握手:客户端发送一…...
Kotlin1.8新特性
Kotlin1.8.0新特性 新特性概述 JVM 的新实验性功能:递归复制或删除目录内容提升了 kotlin-reflect 性能新的 -Xdebug 编译器选项,提供更出色的调试体验kotlin-stdlib-jdk7 与 kotlin-stdlib-jdk8 合并为 kotlin-stdlib提升了 Objective-C/Swift 互操作…...
【Java8】
1、接口中默认方法修饰为普通方法 在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都是默认的。 接口定义方法: public抽象方法需要子类实现 接口定…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
