5文件操作

news/2024/11/29 1:53:35/

包含头文件<fstream>

操作文件三大类:

  1. ofstream : 写文件
  2. ifstream :读文件
  3. fstream : 读写文件

5.1文本文件

-文件以ascii的形式存储在计算机中

5.1.1写文件

步骤:

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

注意:文件打开方式可配合使用,利用|操作符

例如:二进制方式尾部写入文件 ios::binary | ios::ate | ios::out

代码示例: 

写文件简单代码示例:

#include "iostream"
#include "fstream"using namespace std;void test()
{std::ofstream ofs;ofs.open("test.txt",ios::out);ofs << "服了" << endl;ofs << "但不后悔" << endl;ofs.close();}
int main()
{test();return 0;
}

读文件简单演示(四种方式):

  1.  按行读取
  2. 按行读取数组接收
  3. 按行读取string接收
  4. 单个字符读取

代码示例:

#include "iostream"
#include "fstream"
#include "string"using namespace std;void read_file_test()
{std::ifstream ifs;ifs.open("test.txt", ios::in);if(ifs.is_open()){cout << "文件打开成功" << endl;}else{cout << "文件打开失败" << endl;return;}//方式一 按行读取char buff1[1024] = { 0 };while (ifs >> buff1){cout << buff1 << endl;}//方式二 char buff2[1024] = { 0 };while (ifs.getline(buff2, sizeof(buff2))){cout << buff2 << endl;}//方式三 stringstring buff_str;while (getline(ifs, buff_str)){cout << buff_str << endl;}//方式四 读取单个字符效率低char c;while ((c = ifs.get()) != EOF){cout << c;}ifs.close();}
int main()
{read_file_test();return 0;
}

5.2二进制文件

-文件以二进制的形式存储在计算机中

5.2.1写文件

主要利用流对象调用对象函数write

函数原型:ostream& write (const char* buffer,int len);

buffer 指向内存中一段存储空间,len是写入的字节数

代码示例:

#include "iostream"
#include "fstream"
using namespace std;
using namespace std;
//二进制的形式不只可以操作基本类型也可以操作自定义类型
class dog
{
public:char m_name;int m_age;
public:dog(){m_name = 'A';m_age = 19;}
};
void write_file_binary()
{std::ofstream ofs;ofs.open("write_file_binary.txt", ios::out | ios::binary);dog d;string s = "无语";ofs << "无语" << endl;ofs.write((const char*)&d, sizeof(dog));ofs.write((const char*)&s, sizeof(s));ofs.close();
}
int main()
{write_file_binary();system("pause");return 0;
}

 运行结果:

5.2.2读文件

主要利用流对象调用对象函数read

函数原型:istream& read(char *buffer,int len);

buffer指向内存中一段存储空间,len是读的字节数。

代码示例:

#include "iostream"
#include "fstream"
using namespace std;
using namespace std;
//二进制的形式不只可以操作基本类型也可以操作自定义类型
class dog
{
public:char m_name;int m_age;
public:dog(){m_name = 'A';m_age = 19;}
};
void read_file_binary()
{std::ifstream ifs;ifs.open("write_file_binary.txt", ios::in | ios::binary);if (ifs.is_open()){}else{cout << "打开失败!" << endl;}dog d;ifs.read((char*)&d, sizeof(dog));cout << "d.name :" << d.m_name << "  " << "d.age :" << d.m_age << endl;ifs.close();
}
int main()
{read_file_binary();system("pause");return 0;
}

运行结果:

 


http://www.ppmy.cn/news/1324105.html

相关文章

python对access数据库的增删改查

import pyodbc from datetime import datetime import random random_number random.randint(1, 100) current_datetime datetime.now() # 获取当前时间 path r.\Database1.accdb # 数据库所在的位置 datasheet1 "datatable" # 连接到Access数据库 conn_st…

FFMPEG命令生成各国国旗

文章目录 亚洲篇中国~待完善朝鲜~待补充韩国~待补充蒙古~待补充日本越南~待补充老挝 欧洲篇挪威~待补充瑞典~待补充芬兰~待补充冰岛~待补充丹麦~待补充爱沙尼亚拉脱维亚立陶宛白俄罗斯~待补充乌克兰摩尔多瓦~待补充俄罗斯德国 亚洲篇 中国~待完善 先画个五角星 在100x100的画…

Linux搭建简单NFS服务

目录 准备工作&#xff1a; 需求一&#xff1a; 需求二&#xff1a; 需求三&#xff1a; 准备工作&#xff1a; 安装需要的软件&#xff08;服务端和客户端都需要安装&#xff09;&#xff1a; [rootserver ~]# yum install rpcbind -y[rootserver ~]# yum install nfs-ut…

七、Qt 信号和槽

在QT4以上的版本&#xff0c;在窗体上用可以通过选中控件&#xff0c;然后点击鼠标右键单击按钮&#xff0c;选择“转到槽”。可以自动创建信号和槽。 选择clicked(),并点击 ok Qt Creator会给头文件和代码文件自动添加 这个按钮的单击事件&#xff08;信号和槽&#xff09;。 …

基于安卓系统的智能家居控制系统

实验流程 &#xff08;一&#xff09;实验流程图 &#xff08;二&#xff09;实验步骤 1.蓝牙配置 &#xff08;1&#xff09;所需材料 USB 转 TTL 模块&#xff08;下载器)、HC-05 蓝牙模块一对、串口调试助手。 &#xff08;2&#xff09;配置要求 实现两个蓝牙模块的主从…

天拓分享:汽车零部件制造企业如何利用边缘计算网关和数网星平台实现数控机床数据采集分析

一、项目背景 某汽车零部件制造企业为了提高生产效率、降低能耗和提高产品质量&#xff0c;决定引入TDE边缘计算网关和数网星工业互联网平台&#xff0c;对数控机床进行数据采集与分析。 二、解决方案 1、设备选型与配置&#xff1a;考虑到企业生产需求和数控机床的特性&…

金融CRM系统是什么?有哪些功能和作用

今年市场经济下行&#xff0c;投资趋向于保守、人们消费降级&#xff0c;对于金融行业来说影响很大。受经济形式的影响加上行业的数字化转型升级&#xff0c;金融企业都在寻求客户管理的新策略&#xff0c;维护好忠实客户、吸引新客户投资。小编认为CRM系统是管理客户的不二之选…

SpringBoot自动配置(待完善)

EnableAutoConfiguration 开启自动解析配置类 根据 classpath 下的依赖自动配置条件注解自动配置配置文件配置属性spring.autoconfigure.*自定义类加Configuration注解 ImportSelector和DeferredImportSelector 都可以实现配置类分组, DeferredImportSelector可以实现延迟加…