Escape sequences
Escape-последовательности используются для представления определённых специальных символов в строковых литералах и символьных литералах .
Доступны следующие escape-последовательности:
|
Escape
sequence |
Описание | Представление |
|---|---|---|
| Простые escape-последовательности | ||
\'
|
одинарная кавычка |
байт
0x27
в кодировке ASCII
|
\"
|
двойная кавычка |
байт
0x22
в кодировке ASCII
|
\?
|
знак вопроса |
байт
0x3f
в кодировке ASCII
|
\\
|
обратная косая черта |
байт
0x5c
в кодировке ASCII
|
\a
|
звуковой сигнал |
байт
0x07
в кодировке ASCII
|
\b
|
возврат на шаг |
байт
0x08
в кодировке ASCII
|
\f
|
перевод формата - новая страница |
байт
0x0c
в кодировке ASCII
|
\n
|
перевод строки - новая строка |
байт
0x0a
в кодировке ASCII
|
\r
|
возврат каретки |
байт
0x0d
в кодировке ASCII
|
\t
|
горизонтальная табуляция |
байт
0x09
в кодировке ASCII
|
\v
|
вертикальная табуляция |
байт
0x0b
в кодировке ASCII
|
| Числовые escape-последовательности | ||
\
nnn
|
произвольное восьмеричное значение |
кодовая единица
nnn
(1~3 восьмеричных цифр)
|
\o{
n...
}
(since C++23)
|
кодовая единица
n...
(произвольное количество восьмеричных цифр)
|
|
\x
n...
|
произвольное шестнадцатеричное значение |
кодовая единица
n...
(произвольное количество шестнадцатеричных цифр)
|
\x{
n...
}
(since C++23)
|
||
| Условные escape-последовательности [1] | ||
\
c
|
Определяется реализацией | Определяется реализацией |
| Универсальные символьные имена | ||
\u
nnnn
|
произвольное
Unicode
значение;
может приводить к нескольким кодовым единицам |
кодовая точка
U+
nnnn
(4 шестнадцатеричных цифры)
|
\u{
n...
}
(since C++23)
|
кодовая точка
U+
n...
(произвольное количество шестнадцатеричных цифр)
|
|
\U
nnnnnnnn
|
кодовая точка
U+
nnnnnnnn
(8 шестнадцатеричных цифр)
|
|
\N{
NAME
}
(since C++23)
|
произвольный символ Unicode |
символ с именем
NAME
(см.
ниже
)
|
-
↑
Условные escape-последовательности являются условно-поддерживаемыми. Символ
cв каждой условной escape-последовательности является членом basic source character set (until C++23) basic character set (since C++23) и не является символом, следующим за\в любой другой escape-последовательности.
СодержаниеДиапазон универсальных символьных имен
Примечания\ 0 является наиболее часто используемой восьмеричной escape-последовательностью, поскольку она представляет завершающий нулевой символ в null-terminated strings . Символ новой строки \n имеет особое значение при использовании в текстовом режиме ввода-вывода : он преобразуется в зависящее от ОС представление новой строки, обычно в байт или последовательность байтов. Некоторые системы отмечают свои строки полями длины вместо этого. Восьмеричные escape-последовательности имеют ограничение в три восьмеричных цифры, но завершаются при первом символе, который не является допустимой восьмеричной цифрой, если он встретится раньше. Шестнадцатеричные escape-последовательности не имеют ограничения по длине и завершаются при первом символе, который не является допустимой шестнадцатеричной цифрой. Если значение, представленное одной шестнадцатеричной escape-последовательностью, не соответствует диапазону значений, представленных типом символа, используемым в данном строковом литерале ( char , char8_t , (since C++20) char16_t , char32_t , (since C++11) или wchar_t ), результат не определён.
Экранирующая последовательность с вопросительным знаком \ ? используется для предотвращения интерпретации триграфов внутри строковых литералов: строка вида "??/" компилируется как " \" , но если второй вопросительный знак экранирован, как в "? \? /" , она становится "??/" . Поскольку триграфы были удалены из C++, экранирующая последовательность с вопросительным знаком больше не требуется. Она сохранена для совместимости с C++14 (и предыдущими редакциями) и языком C. (начиная с C++17)
Пример
Запустить этот код
Вывод: This is a test She said, "Sells she seashells on the seashore?" Отчёты о дефектахСледующие отчёты о дефектах, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
Смотрите также
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||