Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Текстовой редактор: хранение и изменение текста

#cpp #строки #text #редактор_текста


Хочу написать свой текстовой редактор (в образовательных целях). Сразу столкнулся
с такой проблемой как хранить редактируемый текст?

Если в одной переменной типа string, то будет уходить много времени на вставку символов.
Если использовать list, то обращение к произвольному символу будет сложной задачей,
да и выделять память отдельно для каждого символа тоже не хорошо. vector - это считай
почти тоже самое, что и string. Понимаю, что на небольших файл это не имеет особого
значения. Можно также делить редактируемый текст на строки и работать с каждой по отдельности
(как в kilo). Но тут будут проблемы с производительностью, если весь текст это одна
большая строка. Хотелось бы найти универсальное решение.

Как реализована данная функция в других редакторах? Порылся в исходниках vim'a, но
так и не смог найти структур и функций, которые бы за это отвечали.

Буду благодарен как за объяснения возможных способов решения данной задачи, так и
за ссылки на исходные коды других текстовых редакторов с указанием мест где можно найти
способ решения этой задачи.
    


Ответы

Ответ 1



Есть следующая книга: Э.Гамма. Р. Хелм. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Там как раз рассматривается пример проектирования редактора документов. Вам точно туда стоит заглянуть, найдете там много ответов.

Комментариев нет:

Отправить комментарий