Многие C++ программисты в Windows теряются при виде странных идентификаторов TCHAR, LPCTSTR. В этой статье я попытатюсь развеять все сомнения.
В общем, символ может быть представлен 1им или 2мя байтами. Предположим, что 1-байтовый символ это ANSI символ — все Английские символы представлены этой кодировкой. В то время как 2-байтовый символ это Юникод, который может представлять все языки мира.
Компилятор Visual C++ поддерживает char и wchar_t как родные типы данных для ANSI и Unicode символов, соответственно. Есть более конкретное определение Юникода, но предположим что операционная система Windows использует wchar_t для поддержки нескольких языков.
There is more to Unicode than 2-bytes character representation Windows uses. Microsoft Windows use UTF-16 character encoding.
Используйте обобщённые типы данных и имена для представления символов и строк, чтобы ваш C/C++ код не зависел от режима кодировки.
В настройках проекта (Configuration Properties). В разделе Общие » Набор Символов (General » Character Set) устанавливается кодировка используемая при компиляции.
Это означает следующее. Если проект был скомпилировн в Юникоде, то TCHAR будет преобразован в wchar_t. Если же проект был скомпилирован как ANSI / MBCS, то TCHAR будет преобразован в char. Вы можете использовать char и wchar_t в любое время и настройки проекта не повлияют на непосредственное использование этих ключевых слов.