во многих примерах сталкивался с подобной обёрткой HTML, но не где не могу найти как это работает ни слова.. Вот такие примеры часто попадаются:
const char MAIN_page[] PROGMEM = R"=====(
<HTML>
<HEAD>
<TITLE>My first web page</TITLE>
</HEAD>
<BODY>
<CENTER>
<B>Hello World.... </B>
</CENTER>
</BODY>
</HTML>
)=====";
Как работает данный метод обёртки текста в C++?
Из стандарта (раздел 5.13.5)...
необработанная-строка: " посл-d-символов_opt ( посл-r-символов_opt ) посл-d-символов_opt "
Строковый литерал с префиксом R называется необработанным строковым литералом (raw string literal). Конструкция посл-d-символов служит разделителем. Завершающая посл-d-символов из конструкции необработанная-строка является той же самой последовательностью символов, что и начальная посл-d-символов. Конструкция посл-d-символов должна состоять не более чем из 16 символов.
Словом, обыденными словами: Если встречается R"
, после которого идут какие-то символы и (
, а в конце - )
и те же символы с "
, то то, что между ()
, рассматривается как просто строковый литерал без всяких esc-символов или иной обработки - как есть, со всеми переводами кареток и новыми строками.
Сравните:
const char* a = "\\\\\"\"\\\\";
const char* b = R"raw(\\""\\)raw";
Так что в вашем примере в строку помещается просто кусок HTML-текста.
Все эти =====
- скорее для красоты, чем для гарантии, что в строке не встретится конечный ограничитель )====="
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как запретить ввод в текстовое поле несколько нулей одновременно, чтобы можно было вводить только числа с плавающей запятой, например, 0,5 и целые...
столкнулась с проблемой оптимизации следующего запроса
ЗдраствуйтеНедавно на новом проекте столкнулся в первый раз с проблемой относительно больших данных в Mysql
Как вывести всех пользователей, которых я не лайнкул в таблице likes и соответствую условию