20240422,C++文件操作

停电一天之后,今天还有什么理由不学习呜呜……还是没怎么学习

一,文件操作

文件操作可以将数据持久化,对文件操作时须包含头文件<fstream>
两种文件类型:文本文件:文件以文本的ASCII码形式存储;二进制文件:文件以文本的二进制形式存储
操作文件三大类:ofstream 写操作;ifsream读操作, fstream读写操作

1.1 文本文件
1.1.1  写文件

包含头文件:#include <fstream>——创建流对象:ofs.open("文件路径”,打开方式);——写数据:ofs<<"写入的数据">>;——关闭文件:ofs.close();
打开方式 :
ios::in   为读文件而打开文件
ios::out   为写文件而打开文件
ios::ate   初始位置:文件尾
ios::app   追加方式写文件
ios::trunc   如果文件存在先删除,再创建
ios::binary   二进制方式

注意:|  操作符,配合使用文件打开方式,IOS::BINARY | IOS::OUT——用二进制方式写文件;未指定完整文件夹路径,默认和源文件一起?

#include <iostream>
#include <fstream>
using namespace std;void test01() {//创建流对象ofstream ofs;//指定打开方式    “文件路径”,打开方式ofs.open("test.txt", ios::out);//写内容ofs << "姓名 :张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;//关文件ofs.close();
}
int main() {test01();system("pause");return 0;
}
1.1.2  读文件

包含头文件:#include <fstream>——创建流对象:ifstream ifs——打开并判断文件是否打开成功 ifs .open ("文件路径",打开方式)——读数据【四种方式读取】——关闭文件 ifs.close();

字符数组while (ifs >> buff)        字符数组while (ifs.getline(buff2, sizeof(buff2)))
字符串【这里不可以省略<string>】while (getline (ifs,buff3))     单个字符while ((c = ifs.get()) != EOF)

#include <iostream>
#include<string>
#include <fstream>
using namespace std;void test01() {ifstream ifs;ifs.open("test.txt", ios::in);if (!ifs.is_open()) {     //is_open(),bool类型,!取反cout << "文件打开失败" << endl;return;   //失败不继续进行}//读数据   第一种   输出上比其他多了一个换行符,不懂char buff[1024] = { 0 };//字符数组while (ifs >> buff) {    //文件写入BUFF,没有数据的时候循环结束cout << buff << endl;}//第二种//char buff2[1024] = { 0 };//while (ifs.getline(buff2, sizeof(buff2))) {//GETLINE获取一行,char*,首地址,count最多读几个字节数【数组大小】//	cout << buff2 << endl;//}//都不注释也只输出一次,不懂//第三种//string buff3;基础的输入流,GETLINE基础的输入流,需要输入流对象IFS,准备好的字符串//while (getline (ifs,buff3)) {   //未定义标识符getline?不懂//	cout << buff3 << endl;//}//失败——加上<string>头文件//第四种,C,不常用,效率低/*char c;while ((c = ifs.get()) != EOF) {cout << c;}*/ifs.close();
}
int main() {test01();system("pause");return 0;
}
1.2 二进制文件

打开要指定为ios::binary   

1.2.1 写文件

二进制写文件主要利用流对象调用成员函数WRITE,函数原型:ostream& write ( const char* buffer,int len);解释:字符指针buffer指向内存中的一段存储空间,len是读写的字节数
二进制读入的文件会乱码,只要正确读入就不影响

#include <iostream>
#include<string>
#include <fstream>
using namespace std;
class Person {
public:char m_Name[64];//尽量用C的字符数组,STRING容易出现问题int m_Age;
};void test01() {ofstream ofs;//打开头文件ofs.open("person.txt", ios::out | ios::binary);Person p = { "王五",78 };//对P取地址返回Person性质的地址,强制转换成CHAR*ofs.write((const char*)&p, sizeof(Person));ofs.close();
}
int main() {test01();system("pause");return 0;
}
1.2.2 读文件

二进制读文件主要利用流对象调用成员函数READ,函数原型:istream& read ( const char* buffer,int len);解释:字符指针buffer指向内存中的一段存储空间,len是读写的字节数

#include <iostream>
#include<string>
#include <fstream>
using namespace std;
class Person {
public:char m_Name[64];//尽量用C的字符数组,STRING容易出现问题int m_Age;
};void test01() {ifstream ofs;//打开头文件ofs.open("person.txt", ios::in | ios::binary);if (!ofs.is_open()) {cout << "打开失败" << endl;return;}//读文件Person p;ofs.read((char*)&p, sizeof(Person));//输出数据cout << "姓名:" << p.m_Name << "\t年龄:" <<p.m_Age<< endl;ofs.close();
}
int main() {test01();system("pause");return 0;
}

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

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

相关文章

【Vue3】$subscribe订阅与反应

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

超越OpenAI,谷歌重磅发布从大模型蒸馏的编码器Gecko

引言&#xff1a;介绍文本嵌入模型的重要性和挑战 文本嵌入模型在自然语言处理&#xff08;NLP&#xff09;领域扮演着至关重要的角色。它们将文本转换为密集的向量表示&#xff0c;使得语义相似的文本在嵌入空间中彼此靠近。这些嵌入被广泛应用于各种下游任务&#xff0c;包括…

VideoComposer: Compositional Video Synthesis with Motion Controllability

decompose videos into three distinct types of conditions: textual conditions, spatial conditions, temperal conditions 条件的内容&#xff1a; a. textual condition: coarse grained visual content and motions, 使用openclip vit-H/14的text encoder b. spatial co…

Splashtop 将在 NAB 展会上推出音视频剪辑增强功能

加利福尼亚州拉斯维加斯 Splashtop 在简化随处办公远程解决方案领域处于领先地位&#xff0c;在今年举行的 NAB 展会上将推出 Enterprise 解决方案的高级性能功能&#xff0c;均面向广播和媒体工作者而设计。 Splashtop Enterprise 经过优化&#xff0c;可为执行视频剪辑、唇…

Excel文件解析--超大Excel文件读写

使用POI写入 当我们想在Excel文件中写入100w条数据时&#xff0c;我们用普通的XSSFWorkbook对象写入时会发现&#xff0c;只有在将100w条数据全部加载入内存后才会用write()方法统一写入&#xff0c;这样效率很低&#xff0c;所以我们引入了SXSSFWorkbook进行超大Excel文件的读…

java开发之路——node.js安装

1. 安装node.js 最新Node.js安装详细教程及node.js配置 (1)默认的全局的安装路径和缓存路径 npm安装模块或库(可以统称为包)常用的两种命令形式&#xff1a; 本地安装(local)&#xff1a;npm install 名称全局安装(global)&#xff1a;npm install 名称 -g本地安装和全局安装…

【Leetcode】string类刷题

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 目录 1.仅反转字母2.字符串中第一个唯一字符3.验证回文串4.字符串相加5.反转字符串I I6.反转字符串中的单词III7.字符串相乘8.把字符串转换为整数 1.仅反转字母 题目链接&#xff1a;…

一篇文章带您了解面向对象(java)

1.简单理解面向过程编程和面向对象编程 面向过程编程&#xff1a;开发一个一个的方法&#xff0c;有数据需要处理&#xff0c;我们就可以调用方法来处理。 package com.web.quictstart;public class demo1 {public static void main(String[] args) {totalScore("张三&q…

mac上VMware fusion net模式无法正常使用的问题

更新时间&#xff1a;2024年04月22日21:39:04 1. 问题 环境&#xff1a; intel芯片的macbook pro VMware fusion 13.5.1 无法将“Ethernet0”连接到虚拟网络“/dev/vmnet8”。在这里显示这个之后&#xff0c;应该是vmnet8的网段发生了冲突&#xff0c;所以导致无法正常使用…

前端开发攻略---拖动归类,将元素拖拽到相应位置

1、演示 2、代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-…

2024年Q1季度平板电视行业线上市场销售数据分析

Q1季度平板电视线上市场表现不如预期。 根据鲸参谋数据显示&#xff0c;2024年1月至3月线上电商平台&#xff08;京东天猫淘宝&#xff09;平板电视累计销量约360万件&#xff0c;环比下降12%&#xff0c;同比下降30%&#xff1b;累计销售额约99亿元&#xff0c;环比下降28%&a…

学习STM32第十七天

备份域详解 一、简介 在参考手册的电源控制章节&#xff0c;提到了备份域&#xff0c;BKPR是在RTC外设中用到&#xff0c;包含20个备份数据寄存器&#xff08;80字节&#xff09;&#xff0c;备份域包括4KB的备份SRAM&#xff0c;以32位、16位或8位模式寻址&#xff0c;在VBAT…

C++初阶学习第二弹——C++入门(下)

C入门&#xff08;上&#xff09;&#xff1a;C初阶学习第一弹——C入门&#xff08;上&#xff09;-CSDN博客 目录 一、引用 1.1 引用的实质 1.2 引用的用法 二、函数重载 三、内敛函数 四、auto关键字 五、总结 前言&#xff1a; 在上面一章我们已经讲解了C的一些基本…

Vue2进阶之Vue2高级用法

Vue2高级用法 mixin示例一示例二 plugin插件自定义指令vue-element-admin slot插槽filter过滤器 mixin 示例一 App.vue <template><div id"app"></div> </template><script> const mixin2{created(){console.log("mixin creat…

【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式

目录 1、TCP通信 1.1、Socket 和 ServerSocket 1.3、TCP通信示例 2、UDP的三种通信&#xff08;数据传输&#xff09;方式 1、TCP通信 TCP通信协议是一种可靠的网络协议&#xff0c;它在通信的两端各建立一个Socket对象 通信之前要保证连接已经建立&#xff08;注意TCP是一…

【Interconnection Networks 互连网络】Torus 网络拓扑

1. Torus 网络拓扑2. Torus 网络拓扑结构References 1. Torus 网络拓扑 Torus 和 Mesh 网络拓扑&#xff0c;又可以称为 k-ary n-cubes&#xff0c;在规则的 n 维网格中包裹着 N k^n 个节点&#xff0c;每个维度都有 k 个节点&#xff0c;并且最近邻居之间有通道。k-ary n-c…

YOLOv9有效改进专栏汇总|未来更新卷积、主干、检测头注意力机制、特征融合方式等创新![2024/4/21]

​ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 专栏介绍 YOLOv9作为最新的YOLO系列模型&#xff0c;对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

《HCIP-openEuler实验指导手册》1.3Apache动态功能模块加载卸载练习

1.3.1 配置思路 mod_status 模块可以帮助管理员通过web界面监控Apache运行状态&#xff0c;通过LoadModule指令加载该模块&#xff0c;再配置相关权限&#xff0c;并开启ExtendedStatus后&#xff0c;即可使用该模块。 1.3.2 配置步骤 检查mod_status模块状态&#xff08;使…

net模块

建立TCP的链接 1 发送消息的服务 2 接收消息 2 建立http的链接让浏览器进行访问 import net from netconst html <h1>TCP</h1>const respinseHeaders [HTTP/1.1 200 OK,Content-Type:text/html,Content-Length: html.length,\r\n,html]const http net.create…

RK3568 学习笔记 : u-boot 通过 tftp 网络更新 u-boot自身

前言 开发板型号&#xff1a; 【正点原子】 的 RK3568 开发板 AtomPi-CA1 使用 虚拟机 ubuntu 20.04 收到单独 编译 RK3568 u-boot 使用 rockchip Linux 内核的设备树 【替换】 u-boot 下的 rk3568 开发板设备树文件&#xff0c;解决 u-boot 下千兆网卡设备能识别但是无法 Pi…