C++类和对象(文件操作)

这篇具有很好参考价值的文章主要介绍了C++类和对象(文件操作)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

5、文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放

通过文件可以将数据持久化

C++中对文件操作需要包含头文件< fstream >

文件类型分为两种:

  1. 文本文件——文件以文本的ASCII码形式存储在计算机中
  2. 二进制文件——文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类:

  1. ofstream:写操作
  2. ifstream:读操作
  3. fstream :读写操作

5.1文本文件

5.1.1写文件

写文件步骤如下:

1.包含头文件

#include <fstream>

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

#include<iostream>
using namespace std;
#include<fstream>//头文件包含
//文本文件  写文件
void test01()
{
	//1、包含头文件 #include<fstream>
	//2、创建流对象
	ofstream ofs;
	//3、指定打开方式   ofs.open("文件路径",打开方式);
	ofs.open("test.txt",ios::out);
	//4、写数据(内容)
	ofs << "姓名:张三" << endl;
	ofs << "性别:男" << endl;
	ofs << "年龄:18" << endl;
	//5、关闭文件
	ofs.close();
}

int main()
{
	test01();

	system("pause");
	return 0;
}

总结:

  1. 文件操作必须包含头文件fstream
  2. 读文件可以利用ofstream ,或者fstream类
  3. 打开文件时候需要指定操作文件的路径,以及打开方式
  4. 利用<<可以向文件中写数据
  5. 操作完毕,要关闭文件

5.1.2读文件

读文件与写文件步骤相似,但是读取方式相对比较多

读文件步骤如下:

1.包含头文件

#include <fstream>

2.创建流对象

ifstream ifs;

3.打开文件

ifs.open("文件路径",打开方式);

4.读数据

四种方式读取

5.关闭文件

ifs.close();

#include<iostream>
using namespace std;
#include <fstream>
#include <string>
//文本文件  读文件
void test01()
{
	//1、包含头文件   #include <fstream>
	//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 end of file
	{
		cout << c;
	}
	//5、关闭文件
	ifs.close();
}

int main()
{
	test01();

	system("pause");
	return 0;
}

总结:

  1. 读文件可以利用 ifstream ,或者fstream
  2. 利用is_open函数可以判断文件是否打开成功
  3. close 关闭文件

5.2 二进制文件

以二进制的方式对文件进行读写操作

打开方式要指定为ios::binary

5.2.1 写文件

二进制方式写文件主要利用流对象调用成员函数write

函数原型:ostream& write(const char * buffer, int len);

参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数

#include<iostream>
using namespace std;
#include <fstream>
#include <string>
//二进制文件  写文件
class Person
{
public:
	char m_Name[64];//姓名
	int m_Age;//年龄
};

void test01()
{
	//1、包含头文件   #include <fstream>
	//2、创建流对象
	ofstream ofs("person.txt", ios::out | ios::binary);
	//3、打开文件  并且判断是否打开成功
	//ofs.open("person.txt", ios::out | ios::binary);
	//4、写文件
	Person p = { "张三",18 };
	ofs.write((const char *)&p, sizeof(Person));
	//5、关闭文件
	ofs.close();
}

int main()
{
	test01();

	system("pause");
	return 0;
}

总结:

  1. 文件输出流对象 可以通过write函数,以二进制方式写数据。

5.2.2 读文件

二进制方式读文件主要利用流对象调用成员函数read

的数原型: istream& read(char *buffer,int len);

参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数

#include<iostream>
using namespace std;
#include <fstream>
#include <string>
//二进制文件  读文件
class Person
{
public:
	char m_Name[64];//姓名
	int m_Age;//年龄
};

void test01()
{
	//1、包含头文件   #include <fstream>
	//2、创建流对象
	ifstream ifs("person.txt", ios::in | ios::binary);
	//3、打开文件  并且判断是否打开成功
	//ifs.open("person.txt", ios::int | 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();
}

int main()
{
	test01();

	system("pause");
	return 0;
}

总结:文件输入流对象,可以同股票read函数,以二进制方式读数据。文章来源地址https://www.toymoban.com/news/detail-561828.html

到了这里,关于C++类和对象(文件操作)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • <C++> 类和对象-面向对象

    <C++> 类和对象-面向对象

    C语言是 面向过程 的,关注的是过程,分析出求解问题的步骤, 通过函数调用逐步解决问题。 C++是基于 面向对象 的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函

    2024年02月14日
    浏览(11)
  • <C++> 类和对象(上)-面向对象

    <C++> 类和对象(上)-面向对象

    C语言是 面向过程 的,关注的是过程,分析出求解问题的步骤, 通过函数调用逐步解决问题。 C++是基于 面向对象 的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函

    2024年02月11日
    浏览(10)
  • C++——类和对象

    C++——类和对象

    目录 定义类 成员函数有两种定义方式: 成员变量名的建议: 访问限定符 类的作用域 类的实例化 类对象的存储方式 this指针 this指针的特性 this指针可以为空吗 类的默认成员函数 构造函数——初始化 初始化列表 默认构造函数 构造函数的调用 析构函数——成员销毁(析构是

    2024年02月07日
    浏览(11)
  • C++——类和对象(2)

    C++——类和对象(2)

    当一个类中什么都没有,编译器会帮类自动生成6个默认成员函数例如: 此篇文章主要围绕构造函数与析构函数进行讲解。  对于以上的Date类,每次实例化对象之后都要对对象调用Init()函数,比较繁琐,其实编译器就可以帮我们完成。 构造函数是一个特殊的成员函数,名字与

    2024年03月17日
    浏览(24)
  • 【C++】类和对象(中)

    【C++】类和对象(中)

    开始之前,我想说的是,此篇博客花了较长时间,字数比较多,请耐心食用😄 开始之前,我们很有必要先了解类的6个默认成员函数。👇 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面 6个默

    2024年02月19日
    浏览(11)
  • 【C++】:类和对象(2)

    【C++】:类和对象(2)

    朋友们、伙计们,我们又见面了,本期来给大家解读一下有关C++的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏: C语言:从入门到精通 数据结构专栏: 数据结构 个  人  主  页 : stackY、 C + + 专 栏   :C++ Linux 专

    2024年02月08日
    浏览(17)
  • C++ [类和对象 - 下]

    C++ [类和对象 - 下]

            本文已收录至《 C++语言 》专栏! 作者: ARMCSKGT        目录   前言 正文 初始化列表 成员变量的定义与初始化 初始化列表的使用 变量定义顺序 explicit 隐式类型转换 自定义类型隐式转换  explicit 限制转换 关于static static声明类成员 友元 友元函数 友元函数

    2023年04月08日
    浏览(13)
  • C++类和对象(上)

    C++类和对象(上)

    🌇 个人主页 :平凡的小苏 📚 学习格言 :别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸 C++专栏 :C++修炼内功基地 家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我真重要,各位路 过的友友麻烦多多点赞关注,欢迎你们的私信提问,感谢你们的转发!

    2024年02月01日
    浏览(14)
  • C++类和对象练习

    C++类和对象练习

    要求: (1)包含成员变量 m_a(立方体边长)。 (2)包含函数 SetA(doublea)(设置立方体边长)、GetVolume()(计算体积)、GetArea()(计算表面积)。 (3)包含函数 Display(),用来输出计算的结果。 (4)设计测试用主函数 main(),用来测试 Box 类。 包括: (1)普通数据成员:姓

    2023年04月18日
    浏览(13)
  • C++类和对象(上)

    C++类和对象(上)

    ✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏: C语言 🤪、 Cpp 😶‍🌫️、 数据结构初阶 💀 💽座右铭:“ 記住,每一天都是一個新的開始😁😁😁 ” 💀本章内容: 《C++类和对象(上)》的介绍✨ C语言是面向过程的,关注的是过程,分析出求解的步骤,通过函数逐步解

    2024年01月25日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包