Что означает «% lt» в C ++? (НЕ модуль, я знаю, что это делает) - PullRequest
4 голосов
/ 21 мая 2009

Я однажды увидел эту строку кода:

std::cout %lt;%lt; "Hello world!" %lt;%lt; std:: endl;

И мне интересно, что означает %lt;%lt;.

Ответы [ 3 ]

33 голосов
/ 21 мая 2009

Вы, наверное, видели это онлайн. Кто-то загрузил эту строку:

std::cout << "Hello world!" << std::endl;

Что было переведено для вывода на html:

std::cout &lt;&lt; "Hello world!" &lt;&lt; std::endl;

Потому что, конечно, &lt; является html-сущностью для <.

Наконец, что-то где-то решило изменить амперсанды на знаки процента, возможно, как часть схемы кодирования URL.

30 голосов
/ 21 мая 2009

выглядит как "% lt;" предполагается экранировать для передачи http. Как:

%lt;%lt;

должен был быть:

<<
1 голос
/ 21 мая 2009

Моей первой мыслью было, что, возможно, вы видели код, который использовал C триграфы . Однако, как представляется, нет триграфа для < или >.

Триграфы C и их односимвольные эквиваленты:

??=  #
??/  \
??'  ^
??(  [
??)  ]
??!  |
??<  {
??>  }
??-  ~
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...