2013-08-19 46 views
1

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

+1

你是什么意思“大量”和“硬编码”。 –

+2

我喜欢我在我的啤酒冷却器在车库里。 (向发现冰啤酒的德国民众道歉)。你的问题*非常*模糊。它*完全取决于应用程序的目的和定制要求。没有明确的答案,除非“最适合您的需求。” – WhozCraig

+0

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

回答

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."; 
-2

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

+0

“二进制形式”几乎可以是字面上的任何内容,以二进制形式存储文本本身并不会使其变小。你在谈论压缩吗? –

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"; 
0

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

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

例如:

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

您可以在启动检索值,并用这种模式,你的可执行文件是更轻,大型文本可以很容易地保持。

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

1

没有绝对的正确答案。

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

  • 可以更改散文而无需重新编译程序
  • 可以提供不同语言的散文(通过选择在初始化相应的文本文件)
  • 您可以使用标准的咒语-checkers(相对于拼写检查你的代码)
  • 非程序员可以保持文本文件

的缺点是,你需要跟踪文本文件的d确保它位于正确的位置,使用正确的名称和正确的编码。您也可能需要加密,否则模糊它。

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

  • 你做一次,而忘记永远(你少了一个文件,如果你直接在主代码做维护,而不是一个头文件或单个源文件)

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

所以,答案是适合你的任何东西。它不会改变,你可以简单地把它扔在一个字符串中?做到这一点。是否值得编写代码来读取文件并确保它在那里,以便在需要时更改它?做到这一点。

答案取决于你。