当前位置:网站首页>5.文件操作
5.文件操作
2022-07-03 02:05:00 【我想要去航海】
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放。
通过文件可以将数据持久化
C++中对文件操作需要包含头文件 < f s t r e a m > <fstream> <fstream>
文件类型分为两种:
- 文本文件:文件以文本的ASCII码形式存储在计算机中
- 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。
操作文件的三大类:
- ofstream:写操作
- ifstream:读操作
- fstream:读写操作
5.1 文本文件
5.1.1 写文件
写文件步骤如下:
- 包含头文件 #include < f s t r e a m > <fstream> <fstream>
- 创建流对象 ofstream ofs;
- 打开文件 ofs.open(“文件路径”,打开方式);
- 写数据 ofs<<“写入的数据”;
- 关闭文件 ofs.close();
文件打开方式:
| 打开方式 | 解释 |
|---|---|
| ios::in | 为读文件而打开文件 |
| ios::out | 为写文件而打开文件 |
| ios::ate | 初识位置:文件尾 |
| ios::app | 追加方式写文件 |
| ios::trunc | 如果文件存在先删除,再创建 |
| ios::binary | 二进制方式 |
注意:文件打开方式可以配合使用,利用|操作符
例如:用二进制方式写文件:ios::binary | ios::out
#include<iostream>
using namespace std;
#include<fstream> // 头文件包含
// 文本文件 写文件
void test01()
{
// 1. 包含头文件 fstream
// 2. 创建流对象
ofstream ofs;
// 3. 指定打开方式
ofs.open("test.txt", ios::out);
// 4. 写内容
ofs << "姓名:张三" <<endl;
ofs << "性别:男" <<endl;
ofs << "年龄:18" <<endl;
// 5. 关闭文件
ofs.close();
}
int main()
{
test01();
system("pause");
return 0;
}
总结:
- 文件操作必须包含头文件fstream
- 读文件可以利用ofstream,或者fstream类
- 打开文件时候需要指定操作文件的路径,以及打开方式
- 利用<<可以向文件中写数据
- 操作完毕,要关闭文件
5.1.2 读文件
读文件与写文件步骤相似,但是读取方式相对比较多
读文件步骤如下:
- 包含头文件 #include < f s t r e a m > <fstream> <fstream>
- 创建流对象 ifstream ifs;
- 打开文件并判断文件是否打开成功 ifs.open(“文件路径”,打开方式);
- 读数据 四种读取方式
- 关闭文件 ifs.close()
示例:
#include<iostream>
using namespace std;
#include<fstream> // 头文件包含
#include<string>
// 文本文件 读文件
void test01()
{
// 1 包含头文件
// 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()
{
test01();
system("pause");
return 0;
}
总结:
- 读文件可以利用ifstream,或者fstream类
- 利用is_open函数可以判断文件是否打开成功
- close关闭文件
5.2 二进制文件
以二进制的方式对文件进行读写操作
打开方式要指定为:ios::binary
5.2.1 写文件
二进制方式写文件主要利用流对象调用成员函数write
函数原型:ostream& write(const char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数。
示例:
#include<iostream>
using namespace std;
#include<fstream>
// 二进制文件 写文件
class Person
{
public:
char m_Name[64]; // 姓名
int m_Age; // 年龄
};
void test01()
{
// 1 包含头文件
// 2 创建流对象
ofstream ofs;
// 3 打开文件
ofs.open("person.txt", ios::out | ios::binary);
// 4 写文件
Person p = {
"张三", 18};
ofs.write((const char *)&p, sizeof(Person));
// 5 关闭文件
ofs.close();
}
int main() {
test01();
system("pause");
return 0;
}
总结:
文件输出流对象 可以通过write函数,以二进制方式写数据
5.2.2 读文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char *buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数。
示例:
#include<iostream>
using namespace std;
#include<fstream>
class Person
{
public:
char m_Name[64]; // 姓名
int m_Age; // 年龄
};
// 二进制文件 读文件
void test01()
{
// 1 包含头文件
// 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 << " 年龄: " << p.m_Age << endl;
// 5 关闭文件
ifs.close();
}
int main() {
test01();
system("pause");
return 0;
}
文件输入流对象 可以通过readh函数,以二进制方式读数据
边栏推荐
- easyExcel
- 疫情當頭,作為Leader如何進行團隊的管理?| 社區征文
- Certaines fonctionnalités du développement d'applets
- 各国Web3现状与未来
- Analyzing several common string library functions in C language
- Network security OpenVAS
- DDL basic operation
- 使用Go语言实现try{}catch{}finally
- Network security - the simplest virus
- [shutter] top navigation bar implementation (scaffold | defaulttabcontroller | tabbar | tab | tabbarview)
猜你喜欢

Recommendation letter of "listing situation" -- courage is the most valuable

Depth (penetration) selector:: v-deep/deep/ and > > >

How can retail enterprises open the second growth curve under the full link digital transformation

Wechat applet development tool post net:: err_ PROXY_ CONNECTION_ Failed agent problem

His experience in choosing a startup company or a big Internet company may give you some inspiration

8 free, HD, copyright free video material download websites are recommended

全链路数字化转型下,零售企业如何打开第二增长曲线

easyExcel

创建+注册 子应用_定义路由,全局路由与子路由

Redis:Redis的简单使用
随机推荐
微服务组件Sentinel (Hystrix)详细分析
Network security - Trojan horse
[camera topic] complete analysis of camera dtsi
Leetcode 183 Customers who never order (2022.07.02)
单词单词单词
[camera topic] turn a drive to light up the camera
Network security - scanning and password explosion 2
[Yu Yue education] China Ocean University job search OMG reference
[shutter] top navigation bar implementation (scaffold | defaulttabcontroller | tabbar | tab | tabbarview)
Everything file search tool
Cfdiv2 fixed point guessing- (interval answer two points)
Distributed transaction solution
His experience in choosing a startup company or a big Internet company may give you some inspiration
Comment le chef de file gère - t - il l'équipe en cas d'épidémie? Contributions communautaires
y54.第三章 Kubernetes从入门到精通 -- ingress(二七)
The technology boss is ready, and the topic of position C is up to you
File class (check)
Analysis, use and extension of open source API gateway apisex
Reprint some Qt development experience written by great Xia 6.5
Introduce in detail how to communicate with Huawei cloud IOT through mqtt protocol