【问题标题】:Can you store input data or other types of data in a C++ desktop application in a file besides a text file?除了文本文件之外,您能否将 C++ 桌面应用程序中的输入数据或其他类型的数据存储在一个文件中?
【发布时间】:2012-01-21 15:48:14
【问题描述】:

我正在开发一个程序,该程序从用户那里接收一些数据,并接收我定义的重要数据。我的问题很基础也很简单:有没有其他类型的文件可以存储数据?

例如,我可以将 Hello 写入文本文件,然后使用我的代码检索该文本文件中的字符串。有没有一种方法可以像使用文本文件一样从另一种类型的文件中检索数据?我需要这样做,以便用户无法轻松访问数据。毕竟,任何 Windows 用户都知道如何修改文本文件中的字符串。

如果您需要,请提供其他详细信息: -我在 Visual Studio C++ 2010 中做; -操作系统为Windows XP专业版;

如果您需要任何其他详细信息,请告诉我,我们会添加它们。

【问题讨论】:

  • 你可以用你喜欢的任何格式将任何你喜欢的东西写入一个文件(你喜欢的任何扩展名)。
  • 说实话,在开始担心其他用户之前,您可能应该多练习编写供自己使用的程序。这个问题说明你对计算机和编程的了解还很浅。

标签: c++ visual-studio file-io desktop-application


【解决方案1】:

您可以将任何类型的二进制数据写入文件。例如,有一个 struct 包含所有设置为布尔值,然后使用 fwrite 将其转储到文件并使用 fread 读取它。这不会帮助您对抗使用十六进制编辑器的用户,但可能是存储内容的最简单方法。

【讨论】:

    【解决方案2】:

    听起来您正在寻找二进制格式。众所周知的文本格式包括XML

    更多信息:http://en.wikipedia.org/wiki/Binary_file

    您可以采用的其他技术是将文本编码为 base64 编码。如果是机密信息,则需要查看加密算法。

    【讨论】:

      【解决方案3】:

      当然——任何文件都可以直接存储任何字节对齐的数据。如果您想要额外的安全性,请查看加密。

      【讨论】:

        【解决方案4】:

        如果您需要隐藏来自偶然入侵者的数据,只需使用您熟悉的任何文件格式,并使用像 zlib 这样的压缩库来读取和写入流。为了更好的安全性,请改用加密。现有的二进制格式不应该真正掩盖数据,发明自己的二进制格式很少是一个好主意。

        【讨论】:

        • “发明你自己的东西很少是个好主意。” - 哎呀,我猜我在过去的 15 年里一直在做错事...... ;-)
        • @Benj 显然,滚动您自己的二进制文件格式可能有完全正当的理由。但是如果你这样做了,你应该能够回答“使用 XML 或 JSON 或协议缓冲区或 ASN.1 或 SQLite DB 文件有什么优势?”这个问题。而“微弱地掩盖我的数据”并不是一个好的答案。
        【解决方案5】:

        您可以使用 XML 文件或 INI 文件。

        【讨论】:

        • 它们是技术意义上的文本文件。但据我所知,文本文件仅指 *.txt 文件。再读一遍,你是对的,他想让它不那么容易接近,而不是更多。
        猜你喜欢
        • 2022-08-09
        • 2016-03-13
        • 1970-01-01
        • 2021-02-26
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多