「C++编程语言」文件操作
1.文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可将数据持久化 C++中对文件操作需要包含头文件文件流文件类型分为两种: 1.文本文件 文件以文本的ASCLL码形式存储在计算机中 2.二进制文件 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们操作文件的三大类 1.ofstream 写操作 2.ifstream 读操作 3. fstream 读写操作2.文本文件1.写文件 1.包含头文件 #include 2.创建流对象 ofstream ofs; 3.打开文件 ofs.open("文件路径",打开方式); 4.写数据 ofs << "写数据"; 5.关闭文件 ofs.close();2.文件打开方式
注意事项:文件的打开方式可以可以配合使用,利用|操作符例如:用二进制方式写文件 ios::binary | ios::out//1.包含头文件 fstream#include<fstream>//头文件包含//文本文件 写文件voidtest(){//2.创建流对象 ofstream ofs;//3.指定打开方式//不指名文件路径,就在当前项目文件夹中创建文件 ofs.open("first.txt", ios::out);//4.写内容 ofs<<"姓名:张三" << endl; ofs<<"性别:男" << endl; ofs<<"年龄:23" << endl;//5.关闭文件 ofs.close();}intmain(){ test(); system("pause");return;}3.读文件 读文件与写文件步骤相似,但是读取方式相对较多 读文件步骤如下: 1.包含头文件 #include 2.创建流对象 ifstream ifs; 3.打开文件 ifs.open("文件路径",打开方式); 4.读取数据 四种读取方式 5.关闭文件 ifs.close();//文本文件 读文件voidtest02(){//2.创建流对象 ifstream ifs;//3.指定打开方式//不指名文件路径,就在当前项目文件夹中创建文件 ifs.open("first.txt", ios::in);//ifs.is_open() 可以判断文件是否打开成功if(!ifs.is_open()) {cout<< "文件打开失败" <<endl;return; }else {//4.读取数据//方式一char buf[1024] = { }; ifs数据读入buf中while (ifs >> buf) {cout << buf<<endl; }//第二种方式char buf[1024] = { }; getline是ifstream自带的函数 作用:获取一行while (ifs.getline(buf,sizeof(buf))) {cout << buf << endl; }//第三种方式string buf;while (getline(ifs, buf)) {cout<< buf <<endl; }//第四种方式char c;//get()函数每次只读一个字符//循环意思是一次读取一个字符,一直读到文本最后while ( (c = ifs.get()) != EOF ) {//EOF代表文件尾cout << c << endl; } }//5.关闭文件 ifs.close();}intmain(){ test02(); system("pause");return;}3.二进制文件以二进制的方式对文件进行读写操作 打开方式要指定为 ios::binary1.写文件 二进制方式写文件主要利用流对象调用成员函数write函数原型:ostream& write(const char buffer,int len); 参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数//1.头文件的引用#include<fstream>//二进制文件 写文件classPerson {public :char m_Name[64];//姓名int m_Age;//年龄};voidtest01(){//2.创建流对象 ofstream ofs;//3.指定打开方式,要加ios::binary ofs.open("first.txt", ios::out|ios::binary);//使用二进制把内容写到文件中时,打开文件可能会出现乱码情况。//4.写内容 Person p = { "李四",23 };//(const char*)&p 是先取p的地址,然后再转换成const char*类型的//sizeof(p)表明需要多大的空间//查看函数原型 ostream& write(const char *buffer,int len) ofs.write(((constchar*)&p), sizeof(p));//5.关闭文件 ofs.close();}intmain(){ test01(); system("pause");return;}2.读取文件 二进制方式读文件主要利用流对象调用成员函数read函数原型:istream& read(char *buffer, int len) 参数解释:字符指针buffer指向内存一段存储空间 len是读写的字节数#include<fstream>//二进制文件 读文件classPerson {public :char m_Name[64];//姓名int m_Age;//年龄};voidtest02(){//2.创建流对象 ifstream ifs;//3.指定打开方式,要加ios::binary 并判断文件打开是否成功 ifs.open("first.txt", ios::in | ios::binary);if (!ifs.is_open()) {//判断文件是否成功打开cout << "文件打开失败" << endl;return; }else {//4.读文件 Person p; ifs.read((char*)&p,sizeof(p));cout << p.m_Name << p.m_Age << endl; }//5.关闭文件 ifs.close();}intmain(){ test02(); system("pause");return;}