#cpp #строки #text #редактор_текста
Хочу написать свой текстовой редактор (в образовательных целях). Сразу столкнулся с такой проблемой как хранить редактируемый текст? Если в одной переменной типа string, то будет уходить много времени на вставку символов. Если использовать list, то обращение к произвольному символу будет сложной задачей, да и выделять память отдельно для каждого символа тоже не хорошо. vector - это считай почти тоже самое, что и string. Понимаю, что на небольших файл это не имеет особого значения. Можно также делить редактируемый текст на строки и работать с каждой по отдельности (как в kilo). Но тут будут проблемы с производительностью, если весь текст это одна большая строка. Хотелось бы найти универсальное решение. Как реализована данная функция в других редакторах? Порылся в исходниках vim'a, но так и не смог найти структур и функций, которые бы за это отвечали. Буду благодарен как за объяснения возможных способов решения данной задачи, так и за ссылки на исходные коды других текстовых редакторов с указанием мест где можно найти способ решения этой задачи.
Ответы
Ответ 1
Есть следующая книга: Э.Гамма. Р. Хелм. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Там как раз рассматривается пример проектирования редактора документов. Вам точно туда стоит заглянуть, найдете там много ответов.
Комментариев нет:
Отправить комментарий