LINUX.ORG.RU

C++ std::string и кодировки, в т.ч. unicode


0

0

Здравствуйте. С помощью какой библиотеки я могу поперекодировать с минимальным написанием кода строки в C++ из одной кодировки в другую, не исключая уникод? iconv для C, там нужно обёртки писать. ICU по-моему очень жирно. Хотелось бы чего-нибудь, где можно вызвать одну функцию, передать туда std::string, из_какой, в_какую_кодировку и получить результат.

Классы строк из GUI библиотек использовать не предлагать.

теоретически никак, кодировки особенно включая юникод
это очень жирная штука, незря же озвученные
icu и iconv такие пухлые :(

hizel ★★★★★
()
Ответ на: комментарий от hizel

Они не только для кодировок, они для локализации вцелом - там включены правила для преобразования дат, чисел, валют и прочего. Вот думал что-нибудь простое для строчек имеется, а я не знаю.

Barlog_M
() автор топика

> Классы строк из GUI библиотек использовать не предлагать.

Кто GUI библиотека, ты GUI библиотека, ёпт, блджад. Юзай QtCore и не выпендривайся.

anonymous
()

>из одной кодировки в другую, не исключая уникод...передать туда std::string

std::wstring? есть мнение, что в std::string юникод всё одно не влезет

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

С wstring`ом тоже хрень редкостная получится....
В UTF символы разной длины в байтах...

в этом... как его... Glib::ustring все разрулено...
Но работает нешустро.

Stahl ★★☆
()
Ответ на: комментарий от jtootf

В std::string прекрасно влезет UTF-8 равно как и UTF-32 в wstring. Только это не значит что стандартные итераторы будут правильно работать. Если нужен полноценный юникод а не просто чтобы влезло, однозначно ICU.

anonymous
()
Ответ на: комментарий от anonymous

>> Только это не значит что стандартные итераторы будут правильно работать.

В wstring один wchar_t == 1 символ, так что итераторы будут работать как надо.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.