如何存储语法突出显示的文本
How to store syntax-highlighted text?
我正在创建一个简单的文本编辑器,从头开始语法高亮显示作为学校项目。现在,我使用QStringList
来存储文本数据,但稍后我将添加语法高亮功能,我不知道我应该如何存储数据。
一种选择是根本不保存颜色信息,并不断地从代码解析器中获取它。但这可能非常低效。
也许更好的想法是,每一行都有一个结构体列表(包含颜色和字符串),它将存储文本中每个单词的颜色。但我也不确定这能有多快。
存储这些数据的最佳方式是什么?
谢谢
我将建议两种方法。
方法1:使用属性存储文本将数据结构更改为结构的容器。该结构将包含一个文本字符串和一个样式变量:
struct Text_With_Properties
{
std::string text;
Properties text_properties;
};
这可能会占用更多的空间,可能不是最有效的方法。
方法2:解析样式更改
许多编辑器将以正常字体显示文本,然后对样式更改进行另一次解析。例如,当在第二遍中发现c++关键字时,编辑器将更改其样式。
此方法不需要更多的数据空间,但需要更多的处理时间。
这个问题可能太宽泛了。但是您可能会使用HTML标记。它还提供了一种简单的测试方法,因为您可以在浏览器中打开输出。
相关文章:
- 尝试使用 WinBGI 显示文本时出现编译器错误
- 动态填充的组合框不显示文本,列表未定义
- QTreeWidgetItem 突出显示文本问题
- 如何通过单击按钮在QTextEdit中显示文本?
- 在C Windows程序中显示文本文件内容
- findChild 从不显示文本浏览器
- C 在同一行中左右显示文本
- 使用 C++ 中的向量在新行上显示文本文件中的列
- 如何使用 Opengl 库显示文本文件中的 3D 点
- Qt. 方法显示文本() 如果我在 QStyledItemDelegate 中定义了 paint() 方法不起作用
- 如何在C 中的OpenGL中通过矩形显示文本
- 如何使用键盘输入和sf ::文本在SFML中添加一种文本框以显示文本字符串
- QMessageBox:无法在框中显示文本(使用 c++)
- 延迟窗口在 MFC 上显示文本
- Visual Studio代码集成的终端未显示文本
- SFML-不显示文本
- qprogressdialog未显示文本标签
- C++程序无法正确显示文本文件中的内容
- 如何在不显示文本的情况下分配Win32编辑控件的窗口名称
- SDL2 OpenGL SDL2_TTF:显示文本