C++之文件操作
1.通过文件操作将数据永久化
2.包含头文件
3.类型:文本文件,二进制文件
4.操作文件的三大类
1.ofstream 写操作 2.ifstream 读操作 3.fstream 读写操作
写文件步骤:
1. #include<fatream>//包含头文件
2. ofstream ofs;//创建流对象
3. ofs.open("文件路径",打开方式);//打开文件
4. ofs<<"写入的内容";//写文件
5. ofs.close();//关闭文件
补充:文件打开方式
| ios::in | 为读文件而打开文件 |
| ios::out |为写文件而打开文件 |
| ios::ate |初始位置:文件尾 |
|ios::app |追加方式写文件 |
|ios::trunc |如果文件存在,先删除,再创建|
| ios::binary | 二进制方式 |
打开方式可以配合使用,利用|
操作符
如:二进制方式写文件
ios::binary | ios::out
example:
(写文件操作)
#include<iostream>
#include<fstream>
using namespace std;
void test()
{
ofstream ofs;
ofs.open("test.txt", ios::out);
ofs << "姓名:XXXX";
ofs << "年龄:XXXX";
ofs << "专业:XXXX";
ofs << "年级:XXXX";
ofs.close();
}
int main()
{
test();
system("pause");
return 0;
}
如果未指明路径,生成的文件位于当前文件目录下
example2:读文件
#include<iostream>
#include<fstream>
using namespace std;
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;
}
ifs.close();
}
int main()
{
test();
system("pause");
return 0;
}
二进制写文件:
#include<iostream>
#include<fstream>
//#include<string>
using namespace std;
class Person
{
public:
char name[64];
int age;
};
void test()
{
ofstream ofs;
ofs.open("person.txt", ios::out | ios::binary);
Person p = { "张三",18 };
ofs.write((const char * )&p, sizeof(Person));
ofs.close();
}
int main()
{
test();
system("pause");
return 0;
}
需要对强制转换类型
ofs.write((const char * )&p, sizeof(Person));
二进制读文件:
函数原型:
```cpp
istream& read (char *buff,int len)
example:
#include<iostream>
#include<fstream>
using namespace std;
class Person
{
public:
char name[64];
int age;
};
void test()
{
ifstream ifs;
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败!!!" << endl;
}
Person p;
ifs.read(( char *)&p,sizeof(Person));
cout << " 姓名:" << p.name << endl;
cout << " 年龄:" << p.age << endl;
ifs.close();
}
int main()
{
test();
system("pause");
return 0;
}