文件操作
包含头文件
- 文本文件 文件以文本的ASCII码形式存储在计算机中
- 二进制文件 文件以文本的二进制的形式存储在计算机中
操作文件的三大类
- ofstream: 写操作
- ifstream: 读操作
- fstream: 读写操作
文本文件
写文件
- 包含头文件
- 创建流对象 ofstream ofs;
- 打开文件 ofs.open(“文件路径或者文件名”,打开方式);
- 写数据 ofs<<“写入的数据”;
- 关闭文件 ofs.close();
文件打开方式
ios::in 为读文件而打开文件!!
ios::out 为写文件!!
ios::ate 初始位置:文件尾
ios::app 追加方式写文件
ios::trunc 如果文件存在先删除,再创建
ios::binary 二进制方式!!
注意:文件打开方式可以配合使用,利用|操作符
ios::in | ios::binary
如果不指定路径,默认情况和cpp一个路径同级目录下
总结
*文件操作必须包括头文件
*读文件可以利用偶分stream或者fstream类
*打开文件时候需要指定文件的路径或者文件名,以及打开方式
*利用<<可以向文件中写数据
*操作完毕,要关闭文件
读文件
ifstream ifs;
ifs.open("",);
if(!ifs.is_open())
{
cout<<"文件打开失败"<<endl;
return ;
}
读数据方式一:
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)//end of file
{
cout<<c;
}
总结
利用is_open函数可以判断文件是否打开成功
二进制文件
打开方式指定为 ios::binary
写文件
class Person
{
char m_Name[64];
int m_Age;
}
ofstream ofs("person.txt",ios::out|ios::binary);
Person p={"张三",18};
//用write函数写文件
ofs.write((const char*)&p,sizeof(Person));
ofs.close();
读文件
ifs.read((char*)&p,sizeof(Person));