代码先锋网 代码片段及技术文章聚合

C++ 关于存档与读档

c++可以用来制作游戏。可是,如果制作的游戏不能存档,那就特别让人心疼了。这种的游戏通常都是辛辛苦苦玩了半天,好不容易打出的记录,程序重启后,一夜回到解放前。

看着宝贵的血汗数据就这样变为0,小凤我决定,一定要找到一个存读档的方法给大家!

使用freopen

打开文件

freopen是使用重定向的方法读取文件,需要<cstdio>库。听不懂不要紧,反正是个方法就对了。

先来看看打开文件的格式:

freopen(const char *Filename,const char *Mode,FILE *File);

Filename就是你要打开的文件名,用""括起来。

Mode就是模式,有"r"(read读档)和"w"(write存档) 两种。

最后一个是控制流的地方,这个freopen其实也跟流什么的沾沾边,先不深究。这个位置要跟Mode联系起来,Mode是"r"就写stdin,是"w"就写stdout,不能搞错。还有一种叫stdderr,不常用。

最终写下来是个这么个玩意儿:

freopen("C:\\Windows\\system32\\shell32.dll","r",stdin);
freopen("C:\\Windows\\system32\\shell32.dll","w",stdout);

顺带一提:“\\”是个转义字符,本来是“\”的意思。

打开了文件,接下来怎么进行读写的操作呢?

读写操作

打开文件之后,可以使用平常使用的cout,printf写入,cin,scanf读出了。

假如文件里有这样几个数:

1314
520
233

打开了文件,用3次cin

for(int i=0;i<3;++i){
    cin>>x[i];
}

3次cin的结果将会是1314,520与233。

cout什么东西都会跑到文件里头。

但有个问题,打开文件后面所有输入输出都只对文件起作用了,怎么恢复?

fclose关闭文件就很重要了。

关闭文件

可以用fclose()函数来关闭文件的通道。

打开的文件模式是stdin,括号里就写stdin,stdout就写stdout。

于是就成了这样:

fclose(stdin);fclose(stdout);

总的来说,可以把freopen看做是一个黑洞

往里开,它把你的输出内容吸进了文件里

往外开,它把文件里的东西吸出来当输入内容给你

我讲完啦!

——by The_phonx 小凤

版权声明:本文为The_phonx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/The_phonx/article/details/119699355

智能推荐

Unity 常用的几种存档读档方式

一、PlayerPrefs:数据持久化方案 常见的方法如下:  参考功能及代码: 通过单选框是否被勾选上,从而来决定是否播放背景音乐,代码如下: 二、二进制存储(字节流存储) 序列化:新建或打开一个二进制文件,通过二进制格式器将对象写入该二进制文件。 反序列化:打开待反序列化的二进制文件,通过二进制格式器将文件解析成对象。 参考代码如下: 三、json存储 JSON序列化:对象 &mda...

对操作步骤状态以及相应信息进行存储与调用(一)--------类似于游戏的存档与读档;

首先借鉴游戏开发中的存档与读档 存档 PlayerPrefs的工作原理 PlayerPrefs的作用 存储类型 存储数据序列化 三种序列化方法:二进制方法,XML方法,方法 二进制方法 XML方法 Json方法 三种存储方式比较 存档 在unity3d里面,存档和读档主要用到PlayerPrefs类。 PlayerPrefs是unity提供的一个用于数据本地持久化保存和读取的类。 链接: Unit...

Python 名片管理系统(文件版,可存档读档)

Python 名片管理系统(文件版,可存档读档) 相比于函数版的程序,文件版增加了存档读档操作 函数版的可以参考Python名片管理系统(列表、字典和函数的综合应用) 以下是新增部分的代码(不包括调用) 下面是完整版的程序,可直接使用!...

Unity中采用JSON进行存档和读档

在利用JSON做存档和读档之前,首先要在Assets导入一个脚本!这个脚本就是LitJson.dll 然后在Unity中首先创建一个Save脚本,用于保存游戏中相关的信息,在这里我存储的是游戏中怪物的位置以及类型、游戏射击总数量、游戏得分等数据,Save脚本的代码如下(这个脚本是不能挂载在场景中的游戏物体上,因为这个类没有继承自MonoBehaviour行为类): 然后再创建一个脚本GameMan...

Unity_二进制,Jason,XML存档读档

创建一个类Save 用来保存游戏的信息,以便于存档 Save.cs的代码 把信息保存到Save类中 调用存档方法 保存游戏 二进制进行存档: 二进制读档 加载游戏 SetGame(这个方法 提取出来,二进制,Xml,Json存档读档方式都用到) 调用读档方法 加载游戏   Json 同样和上面一样Json方法加载游戏的方法: json 方法 存档读档     Xml ...

猜你喜欢

Unity中Json读档和存档简化版

数据实体类。用于记录游戏物体的坐标、旋转值等等。 下面的这个脚本是挂载到场景中的摄像机或者是灯光上面。...

unity3d游戏存档读档 实现代码

//tiga是挂上要保存的主角 //以下代码能够保存主角在各个场景的位置 public Transform tiga; public float a; public float b; public float c; }...

c++作业存档

c++作业存档 美素数 问题描述 : 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识。 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数。 给定一个区间,你能计算出这个区间内有多少个美素数吗? 输入: 第一行输入一个正整数T,...