2013-08-19 70 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確保它位於正確的位置,使用正確的名稱和正確的編碼。您也可能需要加密,否則模糊它。

「硬編碼」意味着您將散文編碼爲字符串或同等字符。這具有以下優點:

  • 你做一次,而忘記永遠(你少了一個文件,如果你直接在主代碼做維護,而不是一個頭文件或單個源文件)

當然,缺點是每次你需要改變它,你都需要重新編譯你的代碼。

所以,答案是適合你的任何東西。它不會改變,你可以簡單地把它扔在一個字符串中?做到這一點。是否值得編寫代碼來讀取文件並確保它在那裏,以便在需要時更改它?做到這一點。

答案取決於你。