文件 *** 作
1、程序运行时产生的数据都属于临时文件,程序一旦运行结束后都会被释放,通过文件可以将数据持久化
2、class="superseo">c++对文件的 *** 作需要包含头文件
3、文件类型分为两种:
1)文本文件:文件以文本的ASCII码的形式存储在计算机中
2)二进制文件:文件以文本的二进制的形式存储在计算机中,用户一般不能直接读懂它们
4、文件 *** 作分为三大类:
1)写 *** 作 ofstream (o 表示 out 输出)
2)读 *** 作 ifstream (i表示input 输入)
3)读写 *** 作 fstream
5、文本文件
5.1 写文件
步骤如下:
1)包含头文件
#include
2)创建文件流对象
ofstream ofs;
3)打开文件
ofs.open(“文件路径”,打开方式);
4)写数据
ofs<<”写入的数据”;
5)关闭文件
ofs.close();
文件打开方式:
打开方式 解释
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::app 追加方式写文件
ios::trunc 如果文件存在 先删除,再创建
ios::binary 二进制方式
注意文件打开方式可以配合使用,利用| *** 作符
例如用二进制方式写文件 ios::out | ios::binary
可打开文件开效果
5.2 读文件
步骤如下:
1)包含头文件
#include
2)创建文件流对象
ifstream ifs;
3)打开文件并判断文件是否打开成功
ifs.open(“文件路径”,打开方式);
4)读数据
四种读取方式
5)关闭文件
ofs.close();
案例:将写文件小节中写的文件读出来
6、二进制文件
以二进制的方式对文件进行读写 *** 作
打开方式要指定为 ios::binary
文件可能看不懂 造成乱码
6.1 写文件
二进制写文件主要利用流对象去调用成员函数write
函数原型: ostream& write(const char *buffer,int len);
参数解释:字符指针buffer指向内存中的一段存储空间 len是读写的字节数
例:
#include
//包含头文件
#include
using namespace std;
#include
//二进制 写文件
class Person {
public:
char m_Name[64];//姓名
int m_age;//年龄
};
//不仅可以写内置数据类型 还可以写自定义数据类型
void test01()
{
//1、包含头文件
//2、创建流对象
ofstream ofs;
//3、打开文件
ofs.open("Person.txt",ios::out|ios::binary);//或者在创建ofs时就指定 ofstream ofs("Person.txt",ios::out|ios::binary);
//4、写文件
//先创建数据
Person p = { "张三",18 };
ofs.write((const char*)&p, sizeof(Person));
//5、关闭文件
ofs.close();
}
int main()
{
test01();
return 0;
}
6.2 读文件
二进制读文件主要利用流对象去调用成员函数read
函数原型: istream& read(char *buffer,int len);
参数解释:字符指针buffer指向内存中的一段存储空间 len是读写的字节数;
例:
include
//包含头文件
#include
using namespace std;
#include
//二进制 读文件
class Person {
public:
char m_Name[64];//姓名
int m_age;//年龄
};
void test01()
{
//1、包含头文件
//2、创建流对象
ifstream ifs;
//3、打开文件 判断文件是否打开成功
ifs.open("Person.txt", ios::in | ios::binary);//或者在创建ofs时就指定 ofstream ofs("Person.txt",ios::out|ios::binary);
if (!ifs.is_open())
{
cout << "读文件失败" << endl;
}
//4、读文件
//先创建数据
Person p;
ifs.read((char*)&p, sizeof(Person));
cout << "姓名:" << p.m_Name << endl;
cout << "年龄:" << p.m_age << endl;
//5、关闭文件
ifs.close();
}
int main()
{
test01();
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)