目的:将程序数据进行存储,便于研究
文件:
1.文本文件:ASCLL码存储
2.二进制文件:二进制的形式存储,浅显的加密方式
操作文件三大类:
1.ofstream (写
2.ifstream (读
3.fstream (读写
1.文本文件写文件步骤:
1.1头文件
#include <fstream>
1.2.创建流对象
ofstream ofs;
1.3.打开文件
ofs.open("文件名“,打开方式);
1.4.写数据
ofs<<"应写数据”;
1.5.关闭文件
ofs.close();
#include <iostream>
#include <fstream>
using namespace std;
ofstream ofs;//fstream ofs也行 前为写文件,后者为读写文件
void test()
{
ofs.open("test.txt",ios::binary | ios::out);
ofs << "姓名:李红" << endl;
ofs << "性别:女" << endl;
ofs << "年龄:12" << endl;
ofs.close();
}
int main()
{
test();
}
2.文本文件读文件步骤:
与写文件类似(修改操作类),只有第四步有区别
2.1头文件
#include <fstream>
2.2.创建流对象
ifstream ifs;
2.3.打开文件+判断是否成功打开文件
ifs.open("文件名“,打开方式);
//判断代码:
if( !ifs.is_open())
{
cout<<"文件打开失败"<<endl;
retuen ;
}
2.4.读数据
四种方式读取
2.4.1
char buf[1024];
while (ifs>>buf)
{
cout<<buf<<endl;
}
2.4.2
char buf[1024];
while (ifs.getline(buf,sizeof(buf)))
{
cout <<buf<<endl;
}
2.4.3
string ifs;
while(getline(ifs,buf))
{
cout << buf <<endl;
}
2.4.4(不好用......
2.5.关闭文件
ifs.close();
3.二进制文件操作
二进制可以操作自定义类型(慎用c++中的string类型,易出错)
3.1头文件(写文件)
#include <fstream>
3.2.创建流对象
ofstream ofs;
3.3.打开文件
ifs.open("文件名“,打开方式);
//3.2和3.3可以合并: ofstream ofs ("文件名“,打开方式);
ofs.open("person.txt",ios::out|ios binary);
3.4写文件
ofs.write((const char*)&p,size(p));
3.5关闭文件
ofs.close();
4.二进制文件(读文件)
函数原型:
istream& read(char* buffer,int len);
字符指针buffer指向内存一段存储空间,len是读写字节数
4.1头文件
4.2创建对象
ifstream ifs ("person,txt",ios::in|ios binary);
*判断文件是否打开
if(!ifs.is_open())
{
cout<<"打开失败"<<endl;
}
4.3读文件
Person P;
ifs.read((char* )&p,sizeof(p));
cout<<"姓名:"<<p.m_Name<<"年龄"<<p.m_Age<<endl;