C++自学笔记

it2025-04-14  3

C++自学笔记(20 文件操作)

20 文件操作文本文件:写文件文本文件:读文件二进制文件:写文件二进制文件:读文件

20 文件操作

本次记录文件操作,还请各位大佬批评指正! 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放。通过文件可以将数据持久化。C++中对文件操作需要包含头文件 < fstream >。 文件类型分为两种: 1、文本文件 - 文件以文本的ASCII码形式存储在计算机中; 2、二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。 操作文件的三大类: 1、ofstream:写操作 0 - output 2、ifstream:读操作 i - input 3、fstream:读写操作

文本文件:写文件

写文件步骤如下: 1、包含头文件 #include 2、创建流对象 ofstream ofs; 3、打开文件 ofs.open(“文件路径”,打开方式); 4、写数据 ofs<<“写入的数据”; 5、关闭文件 ofs.close(); 文件打开方式:

打开方式解释ios::in为读文件而打开文件ios::out为写文件而打开文件ios::binary二进制方式ios::ate初始位置:文件尾ios::app追加方式写文件ios::trunc如果文件存在先删除,再创建

注意: 文件打开方式可以配合使用,利用 | 操作符。 例如: 用二进制方式写文件 ios::binary | ios::out

#include<iostream> #include <stdlib.h> #include<string> #include<fstream>//1、包含头文件 using namespace std; //文本文件 写文件 void test01() { //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; }

总结: 1、文件操作必须包含头文件 fstream; 2、读文件可以利用 ofstream 或者 fstream类; 3、打开文件时候需要制定操作文件的路径以及打开方式; 4、利用<<可以向文件中写数据; 5、操作完毕要关闭文件。

文本文件:读文件

读文件与写文件步骤相似,但是读取方式相对较多。

读文件步骤如下: 1、包含头文件 #include 2、创建流对象 ifstream ifs; 3、打开文件并判断文件是否成功打开 ifs.open(“文件路径”,打开方式); 4、读数据 四种方式读取 5、关闭文件 ifs.close();

#include<iostream> #include <stdlib.h> #include<string> #include<fstream>//1、包含头文件 using namespace std; //读文件 void test01() { //2、创建流对象 ifstream ifs; //3、打开文件并判断文件是否成功打开 ifs.open("文件路径", 打开方式); 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; }

总结: 1、读文件可以利用 ifstream 或者 fstream类; 2、利用is_open函数可以判断文件是否打开成功; 3、close关闭文件。

二进制文件:写文件

以二进制的方式对文件进行读写操作,打开方式要指定为ios::binary

二进制方式写文件主要利用流对象调用成员函数 write。 函数原型: ofstream& write(const char * buffer,int len); 参数解释: 字符指针buffer指向内存中一段存储空间;len是读写的字节数。

#include<iostream> #include <stdlib.h> #include<string> #include<fstream>//1、包含头文件 using namespace std; //二进制文件 写文件 class Person { public: char m_Name[64];//string 可能会出现问题 int m_Age; }; void test01() { //2、创建流对象 ofstream ofs("person.txt", ios::out | ios::binary);//构造函数指定 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函数,以二进制方式写数据。

二进制文件:读文件

二进制方式读文件主要利用流对象调用成员函数read。 函数原型: ifstream& read(char *buffer, int len); 参数解释: 字符指针buffer指向内存中一段存储空间;len是读写的字节数。

#include<iostream> #include <stdlib.h> #include<string> #include<fstream>//1、包含头文件 using namespace std; //读文件 class Person { public: char m_Name[64]; int m_Age; }; void test01() { //2、创建流对象 ifstream ifs("person.txt", ios::in | ios::binary);//构造函数指定 3、打开文件并判断文件是否打开成功 //ofs.open("person.txt", ios::out | 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; }

总结: 文件输入流对象可以通过read函数,以二进制方式读数据。

最新回复(0)