【问题标题】:how should large amounts of text be stored? [closed]大量文本应该如何存储? [关闭]
【发布时间】:2013-08-19 22:43:50
【问题描述】:

应该如何存储大量硬编码的文本?在 txt 文件中?在代码本身中(在字符串中)?还是另一种方式?例如帮助对话的文本

【问题讨论】:

  • “大量”和“硬编码”是什么意思。
  • 我喜欢车库里的啤酒冷却器。 (向那些觉得冰镇啤酒令人反感的德国人道歉)。您的问题非常含糊。它完全取决于应用程序的目的和定制要求。除了“最适合您的需求”之外,对此没有明确的答案。
  • 大容量是指段落和页面之间,硬编码是指程序员设置的永远不会改变的东西
  • 你可以在std::String之前使用const关键字,如果它不被改变。

标签: c++ text


【解决方案1】:

只要“大量”意味着小于兆字节,我会说将其存储在 std::string 中。如果没有更多详细信息,您将不会得到更好的答案。

鉴于您的评论:

大尺寸是指段落和页面之间,硬编码是指程序员设置的永远不会改变的东西

听起来你想存储少量的散文。你肯定想把它存储在const std::string

const std::string ipsum =
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nec massa mauris.\n"
    "Maecenas luctus venenatis mauris, ut pulvinar nisl ultricies sed. Mauris\n"
    "adipiscing aliquet massa id dapibus. Praesent leo nisl, sollicitudin quis\n"
    "sodales in, mattis ac tortor. Phasellus semper vehicula nibh sit amet pulvinar.\n"
    "Nam faucibus, turpis non feugiat consequat, massa lacus euismod lorem, in\n"
    "viverra orci justo a odio.";

【讨论】:

    【解决方案2】:

    没有绝对正确的答案。

    “软编码”意味着您将散文维护为外部文本文件,您可以在初始化时阅读该文件。这具有以下优点:

    • 无需重新编译程序即可更改散文
    • 您可以提供不同语言的散文(通过在初始化时选择适当的文本文件)
    • 您可以使用标准拼写检查器(而不是对代码进行拼写检查)
    • 非程序员也可以维护文本文件

    缺点是您需要跟踪文本文件并确保它位于正确的位置、具有正确的名称和正确的编码。您可能还需要对其进行加密,或者以其他方式对其进行模糊处理。

    “硬编码”意味着您将散文编码为字符串或等价物。这具有以下优点:

    • 您只需执行一次,就永远忘记(如果您直接在主代码中执行此操作,您需要维护的文件比头文件或单独的源文件少)

    当然,缺点是每次需要修改都需要重新编译代码。

    所以,答案是适合你的。它不会改变,你可以简单地把它扔进一个字符串?去做吧。是否值得编写代码来读取文件并确保它存在,以便您可以在需要时更改它?去做吧。

    答案由你决定。

    【讨论】:

      【解决方案3】:

      一段或一页的文字真的没有那么多。将它保存在字符串文字中的唯一障碍是在代码中指定它的笨拙。具体限制见Max length of a string literal?

      字符串字面量的一个很好的特性是您可以将它们放在一起,它们之间只有空格,它们将被连接成一个字符串。

      const char * paragraph = 
          "'Twas brillig, and the slithy toves" "\n"
          "Did gyre and gimble in the wabe;" "\n"
          "All mimsy were the borogoves," "\n"
          "And the mome raths outgrabe." "\n";
      

      【讨论】:

        【解决方案4】:

        我不建议你在程序中硬编码为常量。

        如果文本不是机密的,一个好主意可以是带有键值对的纯文本文件。 键的名称可以是包含该值的变量的名称。

        例如:

        Quixote="Bla bla bla.........bla"
        Hamlet="Bla bla bla ........bla"
        EOF
        

        您可以在开始时检索值,并且使用这种模式,您的可执行文件更轻,并且可以轻松维护大型文本。

        如果文本是机密的,您可以使用相同的模式,但加密存储的文本并在开始时对其进行解密。

        【讨论】:

          【解决方案5】:

          如果您的意思是大数据,您可以将其保存为二进制形式。它大大减少了数据的大小,尽管它不是人类可读的。这通常用于数值数据。 我真的不明白“硬编码”。您通常读取原始数据,并指示语言以二进制格式编写它。 (你必须考虑小端和大端,但现在大多数机器都是小端)

          【讨论】:

          • “二进制形式”几乎可以是任何东西,并且以二进制形式存储文本本身并不会使其更小。你说的是压缩吗?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-09
          相关资源
          最近更新 更多