保存和加载数据C++

Saving and Loading Data C++

本文关键字:C++ 数据 加载 保存      更新时间:2023-10-16

我知道一种保存程序数据的粗略方法,将其保存在文本文件中。问题是,任何人都可以访问文本文件并对其进行操作。例如,我想保存和加载游戏数据,这些数据会随着游戏的进行而变化。有什么方法可以存储这些数据,并使其只能在游戏程序中访问,这样就不会被其他人操纵?

我们的想法是以这样一种方式格式化数据,使其不被人类读取。这可以通过使用多种方法来实现。

  • 将数据保存为二进制这使得文件难以被人类读取,因此需要使用十六进制编辑器或类似程序。这也使得很难看到一个值在哪里结束,另一个值从哪里开始(在文本文件中,用空格显示)。这样做的另一个优点是,您的文件会小得多
  • 数据加密可以使用各种方法对数据进行加密。这是一个相当安全的选项,但加密可能很慢,因此对于大量数据,这可能不是最佳的,这取决于数据需要保存/加载的速度。还有一个问题是将加密/解密密钥存储在某个地方(可能在文件本身中,或者作为程序中的常量)
  • 困惑这是一个广义的术语,指的是使事物难以阅读。例如,两个字符串可以交错,试图使两者都不可读。混乱通常涉及插入垃圾数据,这些信息不被程序使用,只会让潜在的黑客感到困惑
  • 有效性检查如果有人修改了文件,但他们不知道自己在做什么,那么他们很可能会对程序产生明显的影响。通过这种方式,他们可以简单地摆弄文件,看看你的程序是如何反应的。抵消这种情况的一种方法是检查是否所有数据都在逻辑范围内。数据也可以多次存储在文件中,以不同的方式进行模糊处理或加密。如果数据不同,则表示文件已被篡改

您应该将数据存储在二进制文件中。但人们仍然可以更改它(就像我在Diablo2:D中经常更改角色的技能点或统计点一样),所以你应该考虑找到一种算法来计算哈希和并将其存储在你的数据中。

您可以将数据保存在二进制文件中。只需在c++对象中写入和读取位即可。