我正在编写一个基本的文本编辑器,它实际上是一个编辑控制框,我想为我的主程序编写代码,数值和表达式。在内存中表示格式化文本的最佳方式? 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