简介:
c++中对文件操作需要包含头文件<fstream>
文件类型分为两类:
1,文本文件-文件以ASCII码存储在计算机中
2,二进制文件 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们
操作文件三大类:
1,ofstream:写操作
2,ifstream:读操作
3,fstrem:读写操作
一,文本文件-写文件
步骤:
1,包含头文件:#include<fstream>
2,创建流对象:ofstream ofs;
3,打开文件:ofs.open("文件路径",打开方式);
4,写数据 ofs<<"数据";
5,关闭文件 ofs.close();
用二进制写入文件 ios::binary | ios::out
#include<iostream>
using namespace std;
#include<fstream>
void test()
{
ofstream ofs;
ofs.open("test.txt", ios::out);//写入文件
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs.close();
}
int main()
{
test();
return 0;
}
效果图:
小结:
文件操作必须包括头文件fstream
读文件可以利用ofstream或者fstream
打开文件指定文件路径及打开方法
利用<<可以向文件写入数据
关闭文件
二,文本文件-读文件
1,包含头文件:include<fstream>
2,创建流对象 ifstream ifs;
3,打开文件并判断文件是否打开成功 ifs.open(“文件路径”,打开方式);
4,读数据 四种方式
4,关闭文件 ifs.close()
#include<iostream>
using namespace std;
#include<fstream>
#include<string>
void test()
{
ifstream ifs;
ifs.open("test.txt", ios::in);
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)
{
cout << c;
}
ifs.close();*/
}
int main()
{
test();
return 0;
}
利用is_open函数可以判断文件是否打开
三,二进制文件--写文件
打开方式要指定为:ios::binary
二进制方式写入文件主要利用流对象调用成员函数write
ostram& write(cinst char*buffer,int len);
参数解释:字符指针buffer指向内存中一段存储空间,len读写的字符数
#include<iostream>
using namespace std;
#include<fstream>
#include<string>
class Person {
public:
char m_Name[64];
int m_Age;
};
void test()
{
//创建输出流对象同时打开文件
ofstream ofs("person.txt", ios::out | ios::binary);
Person p = { "张三",18 };
//写入文件
ofs.write((const char*)&p, sizeof(p));
}
int main()
{
test();
return 0;
}
四,二进制文件--读文件
二进制方式读文件主要利用流对象调用成员函数read
istream&热爱的(char*buffer,int len);
class Person
{
public:
char m_Name[64];
int m_Age;
};
void test()
{
ifstream ifs("person.txt",ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "打开文件失败" << endl;
}
Person p;
ifs.read((char*)&p, sizeof(p));
cout << "姓名:" << p.m_Name << "年龄:" << p.m_Age;
}
int main()
{
test();
return 0;
}
文件输入流对象可以通过read函数,以二进制方式读数据