Пространства имён
Варианты
Действия

Управляющие последовательности

Материал из cppreference.com
< cpp‎ | language
 
 
Язык С++
Общие темы
Таблица ASCII
Escape-последовательности
История C++
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 

Управляющие последовательности используются для определения специальных символов внутри строковых литералов.

Определены следующие управляющие последовательности:

Управляющая
последовательность
Описание Представление
\' одинарная кавычка байт 0x27 в кодировке ASCII
\" двойная кавычка байт 0x22 в кодировке ASCII
\? вопросительный знак байт 0x3f в кодировке ASCII
\\ обратная косая черта байт 0x5c в кодировке ASCII
\0 нулевой символ байт 0x00 в кодировке ASCII
\a звуковой сигнал байт 0x07 в кодировке ASCII
\b символ возврата на один символ назад ("забой") байт 0x08 в кодировке ASCII
\f перевод страницы - новая страница байт 0x0c в кодировке ASCII
\n перевод строки - новая строка байт 0x0a в кодировке ASCII
\r возврат каретки байт 0x0d в кодировке ASCII
\t горизонтальная табуляция байт 0x09 в кодировке ASCII
\v вертикальная табуляция байт 0x0b в кодировке ASCII
\nnn произвольное значение в восьмеричной форме байт nnn
\xnn произвольное значение в шестнадцатеричной форме байт nn
\unnnn универсальное имя символа (произвольное значение [1]).
Результатом могут быть несколько символов.
кодовая позиция U+nnnn
\Unnnnnnnn универсальное имя символа (произвольное значение [2]).
Результатом могут быть несколько символов.
кодовая позиция U+nnnnnnnn

[править] Примечания

Символ перевода строки \n имеет специальное значение, когда используется при текстовом вводе/выводе; он конвертируется в зависящее от операционной системы значение (один байт или последовательность байт).

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

Шестнадцатеричные управляющие последовательности не ограничены по длине и заканчиваются перед первым символом, не являющимся шестнадцатеричной цифрой. Если значение одной шестнадцатеричной управляющей последовательности не помещается в диапазон значений символьного типа, используемого в этом строковом литерале (char, char16_t, char32_t или wchar_t), то результат не определён.

Универсальное имя символа в узком строковом литерале или в строковом литерале с двухбайтными символами может отображаться в более чем один символ вследствие многобайтной кодировки. Например, \U0001f34c это 4 char кодовых единицы в кодировке UTF-8 (\xF0\x9F\x8D\x8C) и 2 char16_t кодовых единицы в кодировке UTF-16 (\uD83C\uDF4C)

Управляющая последовательность \? используется для предотвращения распознавания триграфов внутри строковых литералов: "??/" будет интерпретировано как "\", но если для второго вопросительного знака использовать управляющую последовательность, то ("?\?/") интерпретируется как "??/".

[править] Пример

#include <iostream>
 
int main()
{
    std::printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n");
}

Вывод:

This
is
a
test
 
She said, "How are you?"

[править] См. также