我正在編寫一個基本的文本編輯器,它實際上是一個編輯控制框,我想爲我的主程序編寫代碼,數值和表達式。在內存中表示格式化文本的最佳方式? C++
我現在正在做的方式是將字符串提供給編輯控件。在編輯控件中,我有一個類將字符串分解爲「字形」,如單詞,數字,換行符,製表符,格式標記等。字形例如包含表示文字和字符的短整型字符尾隨空白的數量。這些字形還包含繪製文本和計算換行時所需的信息。
例如文本行「我的名字是卡爾」就等於字形的鏈表是這樣的: NewLineGlyph→WordGlyph(「我的」,1個空格)→WordGlyph(「名」,1個空格)→WordGlyph( 「是」,1個空格)→WordGlyph(「Karl」,0空格)→NULL。
因此,不是將字符串作爲連續的字符串(或WCHAR)存儲在內存中,而是以小塊存儲,並且可能會有很多小的分配和釋放。
我的問題是;這樣做時,我應該關心堆碎片嗎?你有任何提示使其更高效嗎?或者完全不同的做法呢? :)
PS。我在Win7上使用C++。
我很好奇:爲什麼你需要存儲的尾部空格的數量? –
真的很方便,我不認爲他們配得上自己的字形。這樣,如果有很多空格,我可以用一個與wchar大小相同的數字來表示。 –
@Karl記得你已經在做一個簡化。許多語言支持許多不同的字符。例如在C#中,空格爲空(除空格外):任何帶有Unicode類Zs,水平製表符(U + 0009),垂直製表符(U + 000B),換頁字符(U + 000C)的字符 – xanatos