Влияет ли настройка компилятора набора символов VS C ++ на кодировку символов? - PullRequest
4 голосов
/ 19 июля 2011

Существуют ли прямые последствия переключения между Юникод , MBCS и Не установлено для настроек компилятора VS C ++ Свойства конфигурации-> Общие -> Набор символов , кроме настройки макросов _ UNICODE , _ MBCS и _ T (что, конечно, косвенно имеет последствия через общие текстовые сопоставления для строковых функций)?

Я не ожидаю этого, но поскольку в документации написано «Указывает компилятору использовать указанный набор символов» , я хотел бы быть уверен, что, в частности, он не имеет любой влияет на то, как кодируется любой текст не-ASCII, помещенный в строки или строки? (Я знаю, что литералы, отличные от ASCII, в источнике не являются переносимыми, но я поддерживаю решение, в котором это активно используется.)

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

Нет, это влияет только на определения макросов.Который, в свою очередь, может иметь широкий спектр влияния на что-либо из <tchar.h> или типов указателей строки Windows T (LPTSTR и т. Д.).

Если вы используете в своих строковых литералах любые не-ASCII-коды, то вы сильно зависите отспособ, которым компилятор декодирует текст в вашем файле исходного кода.В качестве кодировки по умолчанию предполагается, что ваша системная кодовая страница настроена на панели управления + региональные и языковые параметры.Это не будет хорошо работать, когда ваш файл исходного кода когда-либо слишком далеко от вашей машины.Указывать utf8 с помощью спецификации целесообразно, поэтому это никогда не является проблемой.В среде IDE, для которой установлено «Сохранить как», стрелка на кнопке «Сохранить как», «Сохранить с кодированием», выберите 65001. Поддержка файлов с исходным кодом в кодировке utf8 невелика в более старых версиях компиляторов C ++.

2 голосов
/ 19 июля 2011

Для неукрашенных строк C ++ следует за C: это ASCII.Если вы оберните их чем-нибудь, игра изменится.

C ++ 0x стандартизирует строки Unicode.UTF в частности.Это новая функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...