Необработанный строковый литерал C++11: синтаксис, использование и примеры

«Строковый литерал C++11» относится к функции, представленной в языке программирования C++, начиная со стандарта C++11. Необработанные строковые литералы позволяют определять строковые литералы, которые сохраняют точные символы внутри литерала, включая пробельные символы и escape-последовательности, без необходимости экранирования вручную.

Вот несколько методов и примеров, связанных с необработанными строковыми литералами C++11:

  1. Основной синтаксис.
    Основной синтаксис необработанного строкового литерала в C++11 следующий:

    R"delimiter(raw_characters)delimiter"
  2. Разделитель:
    Разделителем может быть любая последовательность символов, но он не должен появляться в разделе raw_characters. Он используется для обозначения начала и конца необработанного строкового литерала.

  3. Пример:
    Вот пример, демонстрирующий использование необработанного строкового литерала:

    #include <iostream>
    int main() {
       const char* message = R"foo(This is a raw string literal \n with special characters.)foo";
       std::cout << message << std::endl;
       return 0;
    }
  4. Сохранение пробелов и escape-последовательностей.
    Необработанные строковые литералы сохраняют точные символы внутри литерала, включая символы пробелов и escape-последовательности. Это полезно при работе со строками, содержащими отступы, разрывы строк или обратную косую черту.

  5. Внедрение разделителей в литерал:
    Если сам раздел raw_characters содержит последовательность разделителей, ее можно экранировать, дублируя разделитель. Например:

    const char* example = R"delimiter(This is an example of using )" within the literal.)delimiter";
  6. Многострочные строки.
    Необработанные строковые литералы особенно полезны для определения многострочных строк без явных символов продолжения строки. Символы новой строки сохраняются в строке.