На платформах, отличных от Windows, вы можете легко использовать строки char *
и рассматривать их как UTF-8.
Проблема в том, что в Windows вы должны принимать и отправлять сообщения, используя строки wchar * (W). Если вы будете использовать функции ANSI (A), вы не будете поддерживать Unicode.
Поэтому, если вы хотите написать действительно переносимое приложение, вам нужно скомпилировать его как Unicode в Windows.
Теперь, чтобы сохранить код в чистоте, я хотел бы посмотреть, каков рекомендуемый способ работы со строками, способ минимизировать уродство в коде.
Тип строк, которые могут вам понадобиться: std::string
, std::wstring
, std::tstring
, char *
, wchat_t *
, TCHAR*
, CString
(ATL one).
Проблемы, с которыми вы можете столкнуться:
cout/cerr/cin
и их варианты Unicode wcout,wcerr,wcin
- все переименованные широкие строковые функции и их макросы TCHAR - например,
strcmp
, wcscmp
и _tcscmp
.
- константы внутри кода, с помощью TCHAR вам нужно будет заполнить ваш код макросами
_T()
.
Какой подход вы считаете лучшим? (примеры приветствуются)
Лично я бы пошел на std::tstring
подход, но мне хотелось бы посмотреть, как поступить с преобразованиями там, где они необходимы.