当前位置 博文首页 > Zhi Zhao的博客:C++入门基础教程(七):文件操作
博主通过对C++基础知识的总结,有望写出深入浅出的C++基础教程专栏,并分享给大家阅读,今后的一段时间我将持续更新C++入门系列博文,想学习C++的朋友可以关注我,希望大家有所收获。
程序运行时产生的数据都属于临时数据,一旦程序运行结束,这些数据都会被释放。所以需要利用文件来存储数据,C++中对文件进行操作时需要包含头文件<fstream>。
文件类型分为两种:
1)文本文件——文件以文本的ASCII码形式存储在计算机中;
2)二进制文件——文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。
C++中有三大类可以实现对文件的操作:
1)ofstream:写操作
2)ifstream:读操作
3)fstream:读写操作
打开方式 | 解释 |
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在,先删除再创建 |
ios::binary | 二进制方式 |
注意:文件打开方式可以配合使用,利用 | 操作符。
例如:用二进制方式写文件?ios::binary | ios::out
void test()
{
// 1.包含头文件fstream
// 2.创建流对象
ofstream ofs;
// 3.指定打开方式
ofs.open("test.txt", ios::out);
// 4.写内容
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs << "年龄:18" << endl;
// 5.关闭文件
ofs.close();
}
void test()
{
// 1.包含头文件
// 2.创建流对象
ifstream ifs;
// 3.打开文件,并且判断是否打开成功
ifs.open("test.txt", ios::in);
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
// 4.读数据:四种方法
// 第一种
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) // EOF表示文件尾
{
cout << c;
}
// 5.关闭文件
ifs.close();
}
void test()
{
// 1.包含头文件
// 2.创建流对象
ofstream ofs;
// 3.指定打开方式
ofs.open("person.txt", ios::out | ios::binary);
// 4.写内容
Person p = { "李四",28 };
ofs.write((const char *)&p, sizeof(Person));
// 5.关闭文件
ofs.close();
}
void test()
{
// 1.包含头文件
// 2.创建流对象
ifstream ifs;
// 3.指定打开方式,并且判断文件是否打开成功
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
// 4.读内容
Person p;
ifs.read((char *)&p, sizeof(Person));
cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
// 5.关闭文件
ifs.close();
}
大家的点赞和关注是博主最大的动力,博主所有博文中的代码文件都可分享给您(除了少量付费资源),如果您想要获取博文中的完整代码文件,可通过C币或积分下载,没有C币或积分的朋友可在关注、点赞和评论博文后,私信发送您的邮箱,我会在第一时间发送给您。博主后面会有更多的分享,敬请关注哦!
?
cs