文件操作
程序运行时的数据是临时数据,程序运行后会被释放。通过文件可以使数据得以保存。
文件操作需包含头文件
文件类型:文本文件、二进制文件
//文件操作三大类
ofstream//读操作
ifstream//写操作
fstream//读写操作
文本文件
写文件
步骤:
1、创建头文件 #include
2、创建流对象 ofstream ofs
3、打开文件 ofs.open(参数1(路径),参数2(打开方式));
4、写文件 ofs << “写入的数据”
5、关闭文件 ofs.close();
打开方式 解释 ios::in 读文件打开文件 ios::out 写文件打开文件 ios::ate 初始位置:文件尾 ios::app 追加方式写文件 ios::trunc 若文件存在,先删除在创建 ios::binary 二进制方式
文件打开方式可以配使用,利用操作符|
读文件
步骤
1、创建头文件 #include
2、创建流对象 ifstream ifs
3、打开文件并判断文件打开是否成功 ofs.open(参数1(路径),参数2(打开方式));
4、读数据
5、关闭文件 ifs.close();
ifstream ifs;
//读文件的方式
/*方式一*/
char a[100] = {0};//创建空的数组
while(ifs >> a)//读到文件尾停止
{
cout << a << endl;
}
/*方式二*/
char a[100] = {0};
while(ifs.getline(a, sizeof(a)))//getline函数有两个参数,参数一表示数组,参数二表示读取字符个数
{
cout << a << endl;
}
/*方式三*/
string ch;
while(getline(ifs, ch))
{
cout << ch << endl;
}
/*方式四*/
char c;
while((c = ifs.get())!=EOF)
{
cout << c;
}
cout << endl;
二进制文件
二进制文件能读取、写入自定义数据类型
写文件
步骤:
1、包含头文件 2、创建流对象 3、打开文件 4、写文件 5、关闭文件
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class person
{
public:
person(string name, int age)
{
this->name = name;
this->age = age;
}
private:
string name;
int age;
};
void test01()
{
person p("Jack", 22);
ofstream ofs;
ofs.open("test.txt", ios::trunc | ios::binary);
ofs.write((const char *)&p, sizeof(person));
ofs.close();
}
int main(void)
{
test01();
system("pause");
return 0;
}
读文件
1、包含头文件 2、创建流对象 3、打开文件,判断文件是否打开成功 4、读文件 5、关闭文件
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class person
{
public:
char name[64];
int age;
};
void test02()
{
person p;
ifstream ofs;
ofs.open("test.txt", ios::in | ios::binary);
if (!ofs.is_open())
{
cout << "wrong" << endl;
return;
}
ofs.read((char *)&p, sizeof(person));
cout << "name = " << p.name << " "
<< "age = " << p.age << endl;
ofs.close();
}
int main(void)
{
test01();
test02();
system("pause");
return 0;
}