当前位置: 首页 > news >正文

【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函数,以二进制方式读数据。


http://www.lryc.cn/news/20545.html

相关文章:

  • 带你了解IP报警柱的特点
  • 一步步教你电脑变成服务器,tomcat的花生壳设置(原创)
  • Python 卷积神经网络 ResNet的基本编写方法
  • 【索引】什么是索引
  • 【算法刷题】动态规划算法题型及方法归纳
  • PolarDB数据库的CSN机制
  • 使用kubeadm 部署kubernetes 1.26.1集群 Calico ToR配置
  • Servlet笔记(11):Servletcontext对象
  • EM算法是什么
  • C++---线性dp---方格取数(每日一道算法2023.2.25)
  • 《第一行代码》 第八章:应用手机多媒体
  • C++设计模式(20)——迭代器模式
  • 戴尔Latitude 3410电脑 Hackintosh 黑苹果efi引导文件
  • 一起Talk Android吧(第五百零四回:如何调整组件在约束布局中的位置)
  • ssh连不上实验室的物理机了
  • selinux讲解
  • 【计算机网络】TCP底层设计交互原理
  • Kotlin1.8新特性
  • 【Java8】
  • 阿里 Java 程序员面试经验分享,附带个人学习笔记、路线大纲
  • 十大算法基础——上(共有20道例题,大多数为简单题)
  • 【PAT甲级题解记录】1018 Public Bike Management (30 分)
  • SpringCloud————Eureka概述及单机注册中心搭建
  • 原生django raw() 分页
  • Android 9.0 Settings 搜索功能屏蔽某个app
  • SQL性能优化的47个小技巧,果断收藏!
  • SE | 哇哦!让人不断感叹真香的数据格式!~
  • 运行Qt后出现无法显示字库问题的解决方案
  • 数据库浅谈之共识算法
  • 代码随想录算法训练营 || 贪心算法 455 376 53