赞
踩
一 概念
通过文件,可以将数据持久化。C++中对文件的操作需要包含头文件<fstream>。
文本文件:以文本的ASCII码的形式存储在计算机当中。
二进制文件:以二进制的形式存储在计算机中,用户一般无法直接阅读。
操作文本的3个类:ofstream,写操作;ifstream,读操作;fstream,读写操作。
二实践
2.1 文件写入
- #include<iostream>
- using namespace std;
- #include<fstream>
-
- void test() {
- ofstream ofs;
- ofs.open("test.txt", ios::out);
- ofs << "This is a test." << endl;
- ofs << "This is a test." << endl;
- ofs << "This is a test." << endl;
- ofs.close();
- }
-
- int main() {
- test();
- return 0;
- }
Note: 文件操作必须包含头文件 fstream;读文件可以利用 ofstream 或 fstream 类;打开文件需要指定操作文件的路径以及打开方式;利用<<可以向文件中写数据;文件操作完毕需要关闭。
2.2 文件读取
读文件步骤:
1、包含头文件,#include<fstream> ;
2、创建流对象,ifstream ifs;
3、打开文件并判断文件是否打开成功,open(“file”,“读取方式”);
4、读取数据,4中方法进行读取;
5、关闭文件,ufs.close()。
- #include<iostream>
- #include<string>
-
- using namespace std;
-
- #include<fstream>
-
- void test() {
- ifstream ifs;
- ifs.open("test.txt", ios::in);
- if (!ifs.is_open()) {
- cout << "文件打开失败" << endl;
- return;
- }
- /*
- char buf[1024] = {0};
- // 第一种读取方式
- while (ifs >> buf) {
- cout << buf << endl;
- }*/
- // 第二种读取方式
- /*
- 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) {
- cout << c;
- }
- ifs.close();
- }
-
- int main() {
- test();
- return 0;
- }
2.3 二进制写文件
- #include<iostream>
- using namespace std;
- #include<fstream>
-
- class Person {
- public:
- char m_Name[64];
- int m_Age;
- };
-
-
- void test() {
- ofstream ofs("person.txt", ios::out | ios::binary);
- Person p = { "张三", 20 };
- ofs.write((const char*)&p, sizeof(Person));
- ofs.close();
- }
-
- int main() {
- test();
- return 0;
- }
**Note:**文件输出流对象可以通过write函数,以二进制的方式写数据。
2.4 二进制写文件
- #include<iostream>
- using namespace std;
- #include<fstream>
-
- class Person {
- public:
- char m_Name[64];
- int m_Age;
- };
-
-
- void test() {
- ifstream ifs;
- ifs.open("person.txt", ios::in | ios::binary);
- if (!ifs.is_open()) {
- cout << "文件打开失败!" << endl;
- return;
- }
- Person p{};
- ifs.read((char*)&p, sizeof(Person));
- cout << "姓名:" << p.m_Name << "\n年龄:" << p.m_Age << endl;
- ifs.close();
- }
-
- int main() {
- test();
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。