Переключение с std :: string на std :: wstring для встроенных приложений? - PullRequest
4 голосов
/ 02 октября 2008

До сих пор я использовал std :: string в моих приложениях C ++ для встроенных систем (маршрутизаторы, коммутаторы, телекоммуникационное оборудование и т. Д.).

Для следующего проекта я планирую перейти с std :: string на std :: wstring для поддержки Unicode. Это, например, позволит конечным пользователям использовать китайские символы в интерфейсе командной строки (CLI).

Каких осложнений / головных болей / неожиданностей мне следует ожидать? Что, например, если я использую стороннюю библиотеку, которая все еще использует std :: string?

Поскольку поддержка международных строк не так сильна, как требование к типу встроенных систем, над которыми я работаю, я бы сделал это только в том случае, если это не вызовет серьезных головных болей.

Ответы [ 3 ]

1 голос
/ 02 октября 2008

std :: wstring - хороший выбор для хранения строк Unicode в Windows, но не на большинстве других платформ и, конечно, не для переносимого кода. Лучше попробуй придерживаться std :: string и UTF-8.

1 голос
/ 02 октября 2008

Обратите внимание, что для многих протоколов связи требуются 8-битные символы (или 7-битные символы, или другие варианты), поэтому вам часто придется переводить между своими внутренними данными wchar_t / wstring и внешними кодировками.

Кодировка UTF-8 полезна, когда вам нужно 8-битное представление символов Юникода. (См. Как писать код, безопасный для UTF-8? , для получения дополнительной информации.) Но учтите, что вам может потребоваться поддержка других кодировок.

Все больше сторонних библиотек поддерживают Unicode, но есть еще много, которые этого не делают.

Я не могу сказать вам, стоит ли это головной боли. Это зависит от ваших требований. Если вы начинаете с нуля, тогда будет проще начать с std :: wstring, чем позже конвертировать из std :: string в std :: wstring.

...