C++ 一些学习笔记(十三)文件操作

    科技2025-10-16  12

    C++ 一些学习笔记(十三)文件操作

    主要是针对之前学习C的时候一些知识点的遗漏的补充,还有一些我自己觉得比较重要的地方。本文章的主要内容是关于文件操作。1.文本文件写文件读文件 2.二进制文件写文件读文件

    主要是针对之前学习C的时候一些知识点的遗漏的补充,还有一些我自己觉得比较重要的地方。

    本文章的主要内容是关于文件操作。

    程序运行时产生的数据都属于临时数据,程序一旦运行结束都会释放,通过文件可以将数据持久化。 C++中对文件操作需要包含头文件<fstream> 文件分为两种:

    文本文件 文件以文本的ASCII码形式存储在计算机中二进制文件 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们

    操作文件的三大类:

    ofstream:写操作ifstream:读操作fstream:读写操作

    1.文本文件

    写文件

    写文件步骤如下:

    包含头文件#include<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> #include <string> #include<fstream>//1/包含头文件 using namespace std; void test01(){ ofstream ofs;//2.创建对象流 ofs.open("/Users/white./Desktop/text.txt",ios::out);//3.指定打开方式 ofs<<"姓名:张三"<<endl;//4.写内容 ofs<<"性别:男"<<endl; ofs<<"年龄:18"<<endl; ofs.close();//5.关闭文件 } int main(){ test01(); system("pause"); return 0; } 1.文件操作必须包含头文件fstream 2.读文件可以利用ofstream,或者fstream 3.打开文件时需要制定操作文件的路径以及打开方式 4.利用<<可以向文件中写数据 5.操作完毕要关闭文件

    读文件

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

    读文件步骤如下:

    包含头文件#include<fstream>创建对象流ifstream ifs;打开文件ifs.open("文件路径",打开方式);读数据:有四种读取方式关闭文件ifs.close(); #include<iostream> #include <string> #include<fstream>//1.包含头文件 using namespace std; void test01(){ ifstream ifs;//2.创建对象流 ifs.open("/Users/white./Desktop/text.txt",ios::in);//3.指定打开方式 if(!ifs.is_open()){//判断是否成功打开 cout<<"文件打开失败"<<endl; return; } //读数据 //方法一 // char buf[1024]={0}; // while (ifs>>buf) {//当数据全部读取完推出while循环 // cout<<buf<<endl; // } //方法二 // char buf[1024]={0}; // while (ifs.getline(buf, sizeof(buf))){//getline参数,第一个参数:获取数组收地址;第二个参数:最多读取的字节数 // 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; // } ifs.close();//5.关闭文件 } int main(){ test01(); system("pause"); return 0; } 1.读文件可以利用ifstream,或者fstream 2.利用is_open函数可以判断文件是否打开成功 3.close关闭文件

    2.二进制文件

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

    写文件

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

    #include<iostream> #include <string> #include<fstream>//1.包含头文件 using namespace std; //二进制操作文件不仅能操纵内置的数据类型,也可以操纵自定义的数据类型 class Person{ public: char m_Name[64]; int m_Age; }; void test01(){ ofstream ofs;//2.创建对象流 ofs.open("/Users/white./Desktop/person.txt",ios::out|ios::binary);//3.指定打开方式 //ofstream ofs("/Users/white./Desktop/person.txt",ios::out|ios::binary);//2.3.可以合并写成这一步 Person p={"张三",18}; ofs.write((const char*)&p,sizeof(Person));//4.写文件 ofs.close();//5.关闭文件 } int main(){ test01(); system("pause"); return 0; } 1.包含头文件 2.创建输出流对象 3.打开文件 4.准备一个数据,把这个数据的类型转换为const char*,定义数据长度 5.关闭文件

    读文件

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

    #include<iostream> #include <string> #include<fstream>//1.包含头文件 using namespace std; //二进制操作文件不仅能操纵内置的数据类型,也可以操纵自定义的数据类型 class Person{ public: char m_Name[64]; int m_Age; }; void test01(){ ifstream ifs;//2.创建对象流 ifs.open("/Users/white./Desktop/person.txt",ios::in|ios::binary);//3.指定打开方式 if (!ifs.is_open()) { cout<<"文件打开失败"<<endl; return; } //ofstream ofs("/Users/white./Desktop/person.txt",ios::out|ios::binary);//2.3.可以合并写成这一步 Person p; ifs.read((char*)&p,sizeof(Person));//4.读文件 cout<<"姓名:"<<p.m_Name<<"年龄:"<<p.m_Age<<endl; ifs.close();//5.关闭文件 } int main(){ test01(); //system("pause"); return 0; }
    Processed: 0.013, SQL: 8