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.hqwc.cn/news/639951.html

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

相关文章

Oracle21C 引入HR实例(linux)

1、下载资源 https://github.com/oracle-samples/db-sample-schemas点击code&#xff08;代码&#xff09;下载 2、上传Sql文件 解压之后将human_resources里的文件复制到demo\schema\目录&#xff08;具体目录前面的路径是你安装的路径&#xff09;下&#xff0c;如下图 3、…

李廉洋:4.23黄金休市之后大幅下跌,原油小幅度上涨。走势分析!

今年以来推动金价上涨的因素是亚洲的需求&#xff0c;很可能来自各国央行。最近又有零售买盘和一些金融买盘作为补充。目前的问题是&#xff0c;不断上升的债券收益率正在争夺资金。美国2年期国债的收益率接近5%&#xff0c;在美联储降息导致收益率开始下降之前&#xff0c;这仍…

软件公司:饥一顿饱一顿,咋办?试一试外部柔性产能。

有人开玩笑&#xff0c;软件公司最理想状态就是&#xff1a;项目来了&#xff0c;公司有足够的人力消化产能&#xff1b;项目没了&#xff0c;人员都走了&#xff0c;不会造成产能搁置。 以上是个理想状态&#xff0c;事实上单纯依靠一个公司是做不到的&#xff0c;所以一定建立…

网络常识!!!

网络常识!!! 一:网络的发展史二:关键的概念三:IP地址四:端口号二级目录二级目录二级目录二级目录三级目录 一:网络的发展史 从游戏方面发展历程进行理解: 从单机游戏-----游戏支持局域网对战-------游戏支持广域网对战-------移动端 (1)局域网对战:在同一个网吧里,不同的游戏…

【C++】---STL之vector详解

【C】---STL之vector详解 一、vector的介绍&#xff1a;二、vector的成员函数&#xff1a;1、vector类的构造函数2、vector的元素访问符3、vector的迭代器4、vector的模版5、vector的拷贝构造6、vector的容量&#xff08;1&#xff09;vector的增容机制&#xff08;2&#xff0…

计算机视觉 | 交通信号灯状态的检测和识别

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在使用计算机视觉技术检测交通信号灯的状态&#xff0c;主要针对红色和绿色信号灯的识别。通过分析输入图像中的像素颜色信息&#xff0c;利用OpenCV库实现对信号灯状态的检测和识别。 目录 一、项目背景 二、项目功能…

路由引入、路由策略、路由过滤实验

实验拓扑 实验思路 配置ip地址&#xff0c;配置RIP,OSPF;在R2上分别在RIP下引入OSPF&#xff0c;在OSPF下引入RIP;在R2上配置acl 2000,拒绝R4的业务网段&#xff0c;同时允许其他网段访问&#xff08;acl 2000 默认拒绝网段&#xff09;&#xff1b;通过配置路由过滤router-…

网络工程师----第九天

路由表解析 路由表&#xff1a;简单点说路由表就是路由器用于指导数据包如何转发的表项&#xff0c;记录了去往目的IP的下一跳去哪里。 路由&#xff1a;路由是网络中的基本概念&#xff0c;网络的基本功能就是使得处于网络中两个IP地址能够互相通信。 路由表作用&#xff1a…

YOLO算法改进Backbone系列之MogaNet:

卷积神经网络&#xff08;ConvNets&#xff09;一直是计算机视觉的首选方法。受灵长类视觉系统的启发&#xff0c;卷积层可以对具有区域密集连接和平移等方差约束的观测图像的邻域相关性进行编码。通过交错分层&#xff0c;ConvNets获得了被动增加的感受野&#xff0c;并善于识…

【C语言】strstr函数刨析-----字符串查找

目录 一、strstr 函数介绍 ✨函数头文件&#xff1a; ✨函数原型&#xff1a; ✨函数解读 ✨功能演示 二、函数的原理以及模拟实现 ✨函数原理 ✨函数的模拟实现 三、strstr函数的注意事项 四、共勉 一、strstr 函数介绍 strstr函数是在一个字符串中查找另一个字符…

基于ssm校园图书在线阅读系统的设计与实现

系统功能 系统设置管理员和用户两种权限。用户只能对个人信息的查阅&#xff0c;修改&#xff0c;图书资源的查询&#xff0c;而管理员则可以进行图书信息及阅读信息的管理。具体实现功能如下&#xff1a; 1&#xff09;安全管理&#xff1a;提供用户登录&#xff0c;修改密码…

MySQL中InnoDB的行级锁

InnoDB 实现了以下两种类型的行锁。 共享锁&#xff08;S&#xff09;&#xff1a;又称为读锁&#xff0c;简称S锁&#xff0c;共享锁就是多个事务对于同一数据可以共享一把锁&#xff0c;都能访问到数据&#xff0c;但是只能读不能修改。 排他锁&#xff08;X&#xff09;&am…