当前位置 博文首页 > Zhi Zhao的博客:C++入门基础教程(七):文件操作

    Zhi Zhao的博客:C++入门基础教程(七):文件操作

    作者:[db:作者] 时间:2021-08-08 13:07

    前言

    博主通过对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

    三、文件操作案例

    1?文本文件的写文件

    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();
    }

    2 文本文件的读文件

    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();
    }

    3 二进制文件的写文件

    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();
    
    }

    4 二进制文件的读文件

    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