Re: Кроссплатформенная работа со строками.
От: saf_e  
Дата: 02.07.15 07:35
Оценка: +2
Здравствуйте, WerWoolf, Вы писали:

WW>Здравствуйте. В связи с работой над одним проектом, возник вопрос в реализации класса строки.

WW>Реализация должна быть кроссплатформенной. Необходима поддержка всех доступных языков,
WW>т.е. ascii не подходит. Задача данного вопроса — узнать возможные варианты реализации
WW>класса, их плюсы и минусы.

WW>Варианты решения:


WW>1) Класс-обертка, который хранит строку как последовательность wchar_t символов.

WW>Здесь хотелось бы узнать плюсы или минусы данного варианта.

WW>2) Класс-обертка, который хранит строку как последовательность char символов, но в

WW>кодировке utf-8. Реализовать конвертеры в другие кодировки.
WW>Здесь хотелось бы узнать плюсы или минусы данного варианта.

WW>3) Другой вариант (который вы считаете лучшим).


WW>Я не прошу вас реализовывать данный класс, просто хотелось бы систематизировать данные

WW>по этому вопросу. Надеюсь на конструктивные ответы.
WW>Всем спасибо.

WW>P.S. Пожалуйста, не предлагайте использовать уже существующие классы из сторонних библиотек,

WW>такие как QString и т.п.

И std::string и std::wstring кросс-платформены и могут хранить любые символы до тех пор пока вы их интерпретируете как UTF-8 и UTF-16.
Обычно внутри программы (системы) имеет смысл принять один из вышеперечисленных и и спользовать его. А вовне отдавать конвертируя в нативное представление.

На Виндах нативное обычно UTF-16, в прочих больше прижилось UTF-8. Самый головняк, что стандартная библиотека MSVC поддерживает UTF-16, но UTF-8 не понимает считая его ANSI, а в остальных банально нету во многих местах поддржки UTF-16 (типа открыть файл/стрим). Это если конечно ниче не поменялось.

Поэтому пока у вас задача только хранить (и неизвестно надо ли еще чего-то) выберите кодировку и успокойтесь. Как надо будет что-то еще — ICU обычно хорошее решение, но часто можно обойтись и системным API.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.