5文件操作

包含头文件<fstream>

操作文件三大类:

  1. ofstream : 写文件
  2. ifstream :读文件
  3. fstream : 读写文件

5.1文本文件

-文件以ascii的形式存储在计算机中

5.1.1写文件

步骤:

  1. 包含头文件    #include "fstream"
  2. 创建流对象    ofstream ofs;
  3. 打开文件       ofs.open(“文件格式”,打开方式);
  4. 写数据           ofs << "写入数据";
  5. 关闭文件       ofs.close();
文件打开方式
打开方式解释
ios::binary二进制方式
ios::in为读文件而打开文件
ios::out为写文件而打开文件
ios::ate初始位置:文件尾
ios::app追加方式写文件
ios::trunc如果文件存在先删除再创建

注意:文件打开方式可配合使用,利用|操作符

例如:二进制方式尾部写入文件 ios::binary | ios::ate | ios::out

代码示例: 

写文件简单代码示例:

#include "iostream"
#include "fstream"

using namespace std;

void test()
{
	std::ofstream ofs;
	ofs.open("test.txt",ios::out);

	ofs << "服了" << endl;
	ofs << "但不后悔" << endl;
	ofs.close();

}
int main()
{
	test();
	return 0;
}

读文件简单演示(四种方式):

  1.  按行读取
  2. 按行读取数组接收
  3. 按行读取string接收
  4. 单个字符读取

代码示例:

#include "iostream"
#include "fstream"
#include "string"

using namespace std;

void read_file_test()
{
	std::ifstream ifs;
	ifs.open("test.txt", ios::in);
	if(ifs.is_open())
	{
		cout << "文件打开成功" << endl;
		
	}
	else
	{
		cout << "文件打开失败" << endl;
		return;
	}
	//方式一 按行读取
	char buff1[1024] = { 0 };
	while (ifs >> buff1)
	{
		cout << buff1 << endl;
	}
	//方式二 
	char buff2[1024] = { 0 };
	while (ifs.getline(buff2, sizeof(buff2)))
	{
		cout << buff2 << endl;
	}
	//方式三 string

	string buff_str;
	while (getline(ifs, buff_str))
	{
		cout << buff_str << endl;
	}
	//方式四 读取单个字符效率低
	char c;
	while ((c = ifs.get()) != EOF)
	{
		cout << c;
	}
	ifs.close();

}
int main()
{
	read_file_test();
	return 0;
}

5.2二进制文件

-文件以二进制的形式存储在计算机中

5.2.1写文件

主要利用流对象调用对象函数write

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

buffer 指向内存中一段存储空间,len是写入的字节数

代码示例:

#include "iostream"
#include "fstream"
using namespace std;
using namespace std;
//二进制的形式不只可以操作基本类型也可以操作自定义类型
class dog
{
public:
	char m_name;
	int m_age;
public:
	dog()
	{
		m_name = 'A';
		m_age = 19;
	}
};
void write_file_binary()
{
	std::ofstream ofs;
	ofs.open("write_file_binary.txt", ios::out | ios::binary);
	dog d;
	string s = "无语";
	ofs << "无语" << endl;
	ofs.write((const char*)&d, sizeof(dog));
	ofs.write((const char*)&s, sizeof(s));
	ofs.close();
}
int main()
{

	write_file_binary();
	system("pause");
	return 0;
}

 运行结果:

5.2.2读文件

主要利用流对象调用对象函数read

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

buffer指向内存中一段存储空间,len是读的字节数。

代码示例:

#include "iostream"
#include "fstream"
using namespace std;
using namespace std;
//二进制的形式不只可以操作基本类型也可以操作自定义类型
class dog
{
public:
	char m_name;
	int m_age;
public:
	dog()
	{
		m_name = 'A';
		m_age = 19;
	}
};
void read_file_binary()
{
	std::ifstream ifs;
	ifs.open("write_file_binary.txt", ios::in | ios::binary);
	if (ifs.is_open())
	{
	}
	else
	{
		cout << "打开失败!" << endl;
	}
	dog d;
	ifs.read((char*)&d, sizeof(dog));
	cout << "d.name :" << d.m_name << "  " << "d.age :" << d.m_age << endl;
	ifs.close();
}
int main()
{

	read_file_binary();
	system("pause");
	return 0;
}

运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/327142.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Edge浏览器入门

关于作者&#xff1a; CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP&#xff0c;带领团队单日营收超千万。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业化变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览…

亚马逊店飞飞ERP系统,跟卖+铺货+物流发货模式综合一体的ERP系统

跨境电商亚马逊&#xff0c;目前为止电商行业比较靠前的电商平台&#xff01;那么有人做电商&#xff0c;就会有人出单&#xff0c;有人出单就会有中转仓需求&#xff0c;代打包&#xff0c;代贴单&#xff01;那么这一切都是有一套逻辑完善的ERP来完成&#xff01;前端通过授权…

MySQL面试题 | 07.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

乡镇档案有必要进行档案数字化吗?

乡镇档案进行数字化是有必要的。数字化可以将纸质档案转化为电子文件&#xff0c;提高档案的存储和管理效率。以下是一些数字化档案的好处&#xff1a; 1. 提高存储效率&#xff1a;数字档案可以节省大量的物理空间&#xff0c;减少纸质档案的存储和维护成本。 2. 方便检索和共…

VS QT 创建新的QT类后,编译报错无法解析的外部符号 “public: virtual struct QMetaObject const *

问题描述&#xff1a; 新建QT的 Widgets 类&#xff0c;创建新的窗口 在编译的时候出现以下报错信息&#xff1a; 1>vfhclassifydialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl VfhClassifyDialog::metaObject…

【python入门】day27: 模拟高铁售票系统

界面 代码 #-*- coding:utf-8 -*- import prettytable as pt#---------导入漂亮表格 import os.path filename ticket.txt#更新座位状态 def update(row_num):#------更新购票状态with open(filename,w,encodingutf-8) as wfile:for i in range(row_num):lst1 [f{i1},有票,有…

Vue-路由-声明式导航

1. 导航链接 vue-router 提供了一个全局组件 router-link (取代 a 标签) 能跳转&#xff0c;配置 to 属性指定路径(必须) 。本质还是 a 标签 &#xff0c;to 无需 #能高亮&#xff0c;默认就会提供高亮类名&#xff0c;可以直接设置高亮样式 如&#xff1a; <div class&…

数据结构及其简单实现

栈 先进后出栈顶操作&#xff08;栈顶进&#xff0c;栈顶出&#xff09; class Strock {constructor() {this.data [] // 可以是对象this.count 0}push(item) {// 实现有三种// 1. this.data.push(item); // 2. this.data[this.data.length] item; this.count// 3this.dat…

五种嵌入式经典通信总线协议

一.先前知识 1.并行与串行 并行通信和串行通信是两种不同的数据传输方式&#xff1a; 并行通信&#xff1a;并行通信是指在同一时间使用多条并行传输的线路传输多个比特的数据。每个比特使用独立的线路进行传输&#xff0c;同时进行。这样可以在一个时钟周期内传输多个比特&…

Kafka入门基本概念(详细)

什么是kafka Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff08;消息引擎系统&#xff09;&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在现代网络上的许多社会功能的一个关键…

c语言-数据类型(下)

目录 4.实型变量 5.字符常量 直接常量&#xff1a; 转义字符&#xff1a; 6.字符变量 7.字符串常量 五、输出格式总结 整型&#xff1a; 浮点型&#xff1a; 字符及字符串&#xff1a; 指针&#xff08;地址&#xff09;&#xff1a; 六、typedef 七、sizeof一个问…

Lazada测评,掌控自养测评号补单技巧,实现销量提升

稳定的Lazada测评除了需要搭建稳定的国外网络环境外&#xff0c;对于养号下单技巧也非常重要。 1.Lazada店铺的listing优化需精心打磨。商品主图、标题、详情页等核心要素&#xff0c;均需细心雕琢&#xff0c;以吸引买家的目光。站在消费者的角度&#xff0c;洞察需求&#x…

LabVIEW编码器自动校准系统

简介 在工作中&#xff0c;精确的角度测量和校准对于保持设备精度至关重要。开发了一套自动化角度编码器校准系统&#xff0c;利用了LabVIEW的强大功能。该系统以全圆连续角度标准装置为基础&#xff0c;配合二维导轨装夹系统&#xff0c;实现了空心轴角度编码器的高效自动校…

数据库往年试卷

实体完整性规则是指关系中的元组在组成主码的属性上是不能为空值的 参照完整性规则指外码不允许参照不存在的相应的主码值,或外码为空值 用户自定义完整性规则是用户根据具体应用定义的 关系数据库有三种基本关系运算&#xff1a;1、选择&#xff1b;2、投影&#xff1b;3、连…

Robotframework自动化测试环境搭建

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 1、在2019年之前&#xff0c;robotframework-ride的版本一…

【HTML5】 canvas 绘制图形

文章目录 一、基本用法二、用法详见2.0、方法属性2.1、绘制线条2.2、绘制矩形2.3、绘制圆形2.4、绘制文本2.5、填充图像 一、基本用法 canvas 标签&#xff1a;可用于在网页上绘制图形&#xff08;使用 JavaScript 在网页上绘制图像&#xff09;画布是一个矩形区域&#xff0c…

用 YAML 文件配置 CI/CD 管道

MSBuild 参数: 在使用 MSBuild 命令行生成打包项目(就像在 Visual Studio 中使用向导生成项目一样)之前,生成过程可以通过编辑 Package.appxmanifest 文件中 Package 元素的 Version 属性,来对生成的 MSIX 包进行版本控制。 在 Azure Pipelines 中,可以使用某个表达式来…

B端产品经理学习-B端产品的项目管理

项目管理的作用 指导Roadmap落地 每个节点的项目时间需要按照时间点落地&#xff0c;才不会影响后面的项目事件 为了明确需求&#xff0c;明确研发的工作 避免产研部门因为需求扯皮、研发部门抱怨需求文档不够清晰、在开发过程中增加很多细节需求、增加了研发的工作量、初次…

散列函数,哈希表hash table

附上一句话&#xff1a;我知道大家可能曾经了解过这个散列表了&#xff0c;我发现&#xff0c;如果多看几个相关的视频&#xff0c;从不同的表述方式和不同的理解角度来理解这个问题&#xff0c;我会明白的更透彻&#xff0c;也有更多新的收获&#xff0c;尤其是对这个算法的应…

软考和 PMP 哪个含金量更高点?

两个证都有用&#xff0c;不同的环境含金量也侧重不用&#xff0c;软考高项比较适用于计算机 IT 行业&#xff0c;而 PMP 不受行业限制&#xff0c;各行各业都适用&#xff0c;没有哪个含金量更高的说法 至于哪个更合适&#xff0c;看你想去国企还是民企&#xff0c;国企软考吃…