Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>В интернете есть разные статьи на тему того, что для хранения строк в памяти можно использовать UTF-8, например:
Можно, но не нужно.
С UTF-8 как сделать str.mid(10, 20) ?
Только сканирование с самого начала. Т.е. это O(n).
На всяких там utf-16, utf-32 (char16_t, char32_t) за O(1).
Строки должны работать быстро.
char16_t wcs[] = u"zß水🍌"; // !!!
Обычно utf-8 — это для хранения извне + передачи данных.
ЭФ>Но если мы уже дошли до строк с переменной длиной символов, то почему бы не пройти дальше и не использовать для записи символов в строку арифметическое кодирование?
Архивировать, да. Но это если куда-то вовне выгружать.
Но сейчас ведь памяти много. Еще бы на строках экономить.