应该如何存储大量文本?

时间:2013-08-19 22:43:51

标签: c++ text

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

5 个答案:

答案 0 :(得分:4)

只要“大量”意味着小于兆字节,我就会把它存储在std::string中。没有更多细节,你不会得到更好的答案。

鉴于你的意见:

  

大型amopunts我的意思是段落和页面之间,硬编码我的意思是程序员设置的东西永远不会改变

听起来你想存放少量的散文。您肯定希望将其存储在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.";

答案 1 :(得分:1)

没有绝对正确的答案。

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

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

缺点是您需要跟踪文本文件并确保它位于正确的位置,具有正确的名称和正确的编码。您也可能需要对其进行加密,否则会使其模糊不清。

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

  • 你做了一次,永远忘了(如果你直接在主代码中执行它,那么你需要维护的文件少一个,而不是头文件或单个源文件)

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

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

答案取决于你。

答案 2 :(得分:0)

文字的段落或页面确实不是那么多。将它保存在字符串文字中的唯一障碍是在代码中指定它的尴尬。有关具体限制,请参阅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";

答案 3 :(得分:0)

我不建议您将程序中的硬编码作为常量。

如果文本不是保密的,那么一个好主意可以是具有键值对的纯文本文件。 键凸轮的名称是包含该值的变量的名称。

例如:

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

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

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

答案 4 :(得分:-2)

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