std::string s("??<");
std::cout << s << std::endl;
Почему это производит {вместо?? <
Я использую Visual Studio 2008. Я, предполагают, что это кодирует его, но почему и чем называют кодирование, если это - то, что происходит?
Этот небольшой % # $ ^*! вызванный меня для поиска ошибки в моем (модульный тест) код в течение 30 минут, прежде чем я выяснил свою строку, был искажен!!: (
Из-за триграфов .
Это поддерживаемые триграфы со страницы Википедии:
?? =
→ #
?? /
→ \
?? '
→ ^
?? (
→ [
??)
→ ]
??!
→ |
?? <
→ {
??>
→ }
?? -
→ ~
Для Visual Studio, согласно в документации триграфы отключены по умолчанию (достаточно разумно), поэтому проверьте свой проект / make файлы.