почему был бы станд.:: представьте s в виде строки (“?? <”), производит {вместо?? <как ожидалось?

std::string s("??<");
std::cout << s << std::endl;

Почему это производит {вместо?? <

Я использую Visual Studio 2008. Я, предполагают, что это кодирует его, но почему и чем называют кодирование, если это - то, что происходит?

Этот небольшой % # $ ^*! вызванный меня для поиска ошибки в моем (модульный тест) код в течение 30 минут, прежде чем я выяснил свою строку, был искажен!!: (

11
задан cchampion 16 December 2009 в 16:54
поделиться

1 ответ

Из-за триграфов .

Это поддерживаемые триграфы со страницы Википедии:

  • ?? = #
  • ?? / \
  • ?? ' ^
  • ?? ( [
  • ??) ]
  • ??! |
  • ?? < {
  • ??> }
  • ?? - ~

Для Visual Studio, согласно в документации триграфы отключены по умолчанию (достаточно разумно), поэтому проверьте свой проект / make файлы.

26
ответ дан 3 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

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