Как это работает? R"=====( )====="

108
11 марта 2022, 10:50

во многих примерах сталкивался с подобной обёрткой 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++?

Answer 1

Из стандарта (раздел 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-текста.

Все эти ===== - скорее для красоты, чем для гарантии, что в строке не встретится конечный ограничитель )=====".

READ ALSO
Как запретить ввод несколько нулей подряд в текстовое поле ввода?

Как запретить ввод несколько нулей подряд в текстовое поле ввода?

Как запретить ввод в текстовое поле несколько нулей одновременно, чтобы можно было вводить только числа с плавающей запятой, например, 0,5 и целые...

247
Оптимизация MySql запроса: count, orderBy, groupBy

Оптимизация MySql запроса: count, orderBy, groupBy

столкнулась с проблемой оптимизации следующего запроса

114
Mysql таблица на 40-50 млн записей со множеством SELECT и INSERT

Mysql таблица на 40-50 млн записей со множеством SELECT и INSERT

ЗдраствуйтеНедавно на новом проекте столкнулся в первый раз с проблемой относительно больших данных в Mysql

110
Вывести пользователей Mysql

Вывести пользователей Mysql

Как вывести всех пользователей, которых я не лайнкул в таблице likes и соответствую условию

92