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++中,结构体内不仅可以定义变量,也可以定义函

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

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

    2024年02月11日
    浏览(50)
  • 【C++】类和对象(中篇)

    在往期 类和对象(上篇) 中,我们初步接触了C++中的类和对象,接下来我会和大家分享有关这个知识点更多的内容~ 如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成默认成员函数。 默认成员函数:用户

    2024年02月15日
    浏览(51)
  • 【C++】:类和对象(1)

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

    2024年02月08日
    浏览(32)
  • 【C++】类和对象-封装

    在main函数前重新补上isSame函数 在Cube类里面添加issamebyclass,利用成员函数判断两个立方体是否相等 自己写的代码: B站视频链接: https://www.bilibili.com/video/BV1et411b73Z/?p=105spm_id_from=333.1007.top_right_bar_window_history.content.clickvd_source=fb8dcae0aee3f1aab700c21099045395

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

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

    2024年03月17日
    浏览(45)
  • 【C++】类和对象(上篇)

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

    2024年01月22日
    浏览(37)
  • c++学习——类和对象

    类是自定义数据类型,是C语言的结构体进化而成的 对象是类实例化出的,用数据类型定义一个变量 C和C++中struct区别: C语言struct只有变量 C++语言struct既有变量,也有函数 1、为什么要有封装? 封装是把属性(变量)和方法(函数)封装到类内,然后给这些数据赋予权限,防

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

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

    2023年04月18日
    浏览(38)
  • c++类和对象(封装)

            C++面向对象的三大特性为: 封装、继承、多态         C++认为万事万物都皆为对象,对象上有其属性和行为 例如:         人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌...车也可以作为对象,属性有轮胎、方向盘、

    2024年02月08日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包