Что Microsoft использует в качестве типа данных для Строк Unicode?

Серия Pragmatic имеет две из лучших книг, которые я прочитал, чтобы помочь получить Вашу голову вокруг управления версиями. У них есть версии для SVN и CVS. Мне действительно нравятся их главы по тегам и ответвлениям.

5
задан REA_ANDREW 27 August 2009 в 10:45
поделиться

4 ответа

Для всего нового программного обеспечения вы должны определить UNICODE и напрямую использовать wchar_t. Использование ANSI-перемешиваний снова будет вас преследовать.

Вам следует просто использовать wchar_t и широкие версии всех функций CRT (например, wcscmp вместо strcmp). Макросы TEXT, TCHAR и т. Д. Существуют только в том случае, если ваш код должен работать как в среде ANSI, так и в среде UNICODE, в чем, как мне кажется, код редко нуждается.

Когда вы создаете новое приложение Windows с помощью Visual Studio, UNICODE определяется автоматически, и wchar_t будет работать как встроенный.

12
ответ дан 18 December 2019 в 07:55
поделиться

Краткий ответ: гибридная инфраструктура с типом TCHAR , макросом _TEXT () и различными _t * функции (на ум приходит _tcscpy ) - это возврат к тем временам, когда у Microsoft сосуществовали две платформы:

  1. Строка Windows NT была основана на строковом представлении Unicode.
  2. Строка Windows 95/98 / ME была основана на строковом представлении ANSI.

Строковое представление здесь означает, что все API Windows, которые ожидали или возвращали строку в ваше приложение использует то или иное представление для этих строк. COM вносил еще больше путаницы, поскольку он был доступен на обеих платформах - и ожидал, что строки Unicode будут на обеих!

В те старые времена вам было рекомендовано писать «переносимый» код: вас проинструктировали использовать гибридную инфраструктуру для ваших строк так что вы можете скомпилировать для обеих моделей, просто определив / отменив определение UNICODE и / или _UNICODE для вашего приложения.

Поскольку строка Windows9x больше не актуальна (в любом случае для подавляющего большинства приложений), вы можете спокойно игнорировать мир ANSI и напрямую использовать строки Unicode.

Остерегайтесь, однако, что Unicode имеет сегодня несколько представлений: как указано выше, соглашение Unicode, подразумеваемое wchar_t, является представлением UCS-2 (все символы закодированы в 16-битных словах). Есть и другие, широко используемые представления, в которых это не обязательно так.

5
ответ дан 18 December 2019 в 07:55
поделиться

В Windows это wchar_t с кодировкой UTF-16 (2 байта).

Источник: http://www.firstobject.com/wchar_t-string-on-linux- osx-windows.htm

2
ответ дан 18 December 2019 в 07:55
поделиться

TCHAR меняет свой тип в зависимости от того, определен ли UNICODE, и должен использоваться, когда вам нужен код, который можно скомпилировать для UNICODE и не-UNICODE.

Если вы хотите явно обрабатывать только данные UNICODE, не стесняйтесь использовать wchar_t.

1
ответ дан 18 December 2019 в 07:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: