c++ - 编辑文本缓冲区

标签 c++ c open-source editor

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

最佳答案

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

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

当时的另一种思路是在未更改的情况下尝试将大块文本保持在一起,而不考虑换行符,仅在编辑需要时将它们分解。优点是可以很容易地将未经编辑的文件大块分解为文件。加载文件、更改一行和保存文件的简单编辑速度非常快。缺点是执行面向行或列 block 的操作非常耗时,因为您必须解析这些大块文本并移动大量数据。

我们始终坚持以线为导向的设计,无论其值(value)如何,我们的产品被认为是当时最快的编辑器之一。

关于c++ - 编辑文本缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/154245/

相关文章:

c++ - 在 C++ 中是否可以有可变数量的字符串数组?

c - 段错误、总线错误、中止

c - xcode不编译c源代码

c - 奇怪的 malloc 行为

visual-studio - 多个 Team Foundation Server

open-source - 开源项目建议,何去何从

php - 通过跟踪号检测承运人的脚本

c++ - 解析存储在 ASCII 中的大型浮点文件的最佳方法?

c++ - 从主进程执行多个进程

c++ - Visual Studio malloc 限制