首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编辑文本缓冲区

编辑文本缓冲区
EN

Stack Overflow用户
提问于 2008-09-30 18:06:54
回答 9查看 7.4K关注 0票数 16

好吧,这是一个有点厚颜无耻的问题。我想构建一个简单的文本编辑器(使用我自己的文本模式屏幕处理)。我只想要一个可以用来表示文本缓冲区的很好的数据结构示例,以及一些字符/文本插入/删除的简单示例。我可以自己处理所有剩余的代码(文件i/o、控制台i/o等)。一个很好的简单编辑器源代码的链接(C或C++)会很棒。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-30 21:07:12

这是2008年。不要编写文本编辑器;您正在重新发明fire。

还在这里吗?我不确定这是否适用,也不确定您计划支持哪些平台,但是Neatpad series of tutorials是一个开始考虑编写文本编辑器的好地方。他们专注于将Win32作为基本平台,但所学到的许多经验教训将适用于任何地方。

票数 8
EN

Stack Overflow用户

发布于 2008-09-30 18:41:46

我曾经在一家公司工作,该公司的主要产品是文本编辑器。虽然我主要研究它的脚本语言,但编辑器本身的内部设计自然是一个主要的讨论主题。

它似乎被分成了两个大体思路。一种方法是将每一行单独存储,然后将它们链接到一个链表或其他您满意的整体数据结构中。这样做的好处是,任何面向行的编辑操作(如删除整行,或在文件中移动行块)都不是很容易实现的,因此速度非常快。缺点是加载和保存文件需要更多的工作,因为您必须遍历整个文件并构建这些数据结构。

当时的另一种思路是,当文本块未被更改时,尝试将文本块保留在一起,而不考虑换行,仅在编辑需要时才将其拆分。这样做的好处是,一个未经编辑的文件块可以很容易地分解成一个文件。因此,加载文件、更改一行和保存文件的简单编辑都非常快。缺点是,面向行或列块的操作执行起来非常耗时,因为您必须解析这些文本块并移动大量数据。

我们一直坚持以行为导向的设计,不管它有什么价值,我们的产品被认为是当时最快的编辑器之一。

票数 15
EN

Stack Overflow用户

发布于 2008-09-30 18:22:34

“四人帮”一书(Design Patterns)有一个基于图形用户界面的文本编辑器作为它的主要示例来源,是一本值得拥有的书。

一般的“纯文本”编辑器可能使用ropes,SGI的STL有一个implementation。基本上,它们是字符缓冲区的链表。这样,插入/删除字符需要更改较小的缓冲区和一些指针,而不是将整个文档存储在单个缓冲区中,然后必须对所有内容进行移位。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/154245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档