Почему размер строки является проблемой?
Либо вам нужен Юникод (или хотя бы
что-то за пределами ASCII), а вы
принять дополнительную память
требования, или вы используете что-то
как std :: string. На первый взгляд,
ICU будет работать с UTF-8, хотя
с небольшой дополнительной работой, и это
идентичен ASCII при работе с
только символы ASCII. - Дэвид
Thornley
Размер строки - самая большая проблема.
Представьте, у вас есть строка размером 100 МБ в памяти. Последний вариант выбран, и все строки сохраняются в UnicodeString (icu) ... Так как код является кросс-платформенным, некоторый другой код нуждается в содержимом в своем собственном формате, скажем, NSString на Mac или System.String на платформах dotNet .
Теперь вам нужно создать временный буфер того же размера, возможно, даже большего (UTF8 может занимать до 6 байт на символ), запустить конвертер и затем создать новую строку выбранного вами типа с содержимым этого буфера. Где-то в этом процессе вы в итоге получаете 3 строки, все одинаковые. Используется более 300 МБ только потому, что строка кода хотела что-то в своем роде ... Какая потеря!
Теперь представьте, что этот код преобразования вызывается несколько раз, а может быть и из нескольких потоков.
Разве нам не повезло, что есть 64-битные решения всех проблем с памятью; -)