>'a' // символьный литерал
>"Hello World!" // строковый литерал
Типом строкового литерала является массив константных символов. Этот тип обсуждается в разделе 3.5.4. К каждому строковому литералу компилятор добавляет нулевой символ (null character) (>'\0'
). Таким образом, реальная величина строкового литерала на единицу больше его видимого размера. Например, литерал >'A'
представляет один символ А, тогда как строковый литерал >"А"
представляет массив из двух символов, символа А и нулевого символа.
Два строковых литерала, разделенных пробелами, табуляцией или символом новой строки, конкатенируются в единый литерал. Такую форму литерала используют, если необходимо написать слишком длинный текст, который неудобно располагать в одной строке.
>// многострочный литерал
>std::cout << "a really, really long string literal "
> "that spans two lines" << std::endl;
У некоторых символов, таких как возврат на один символ или управляющий символ, нет видимого изображения. Такие символы называют непечатаемыми (nonprintable character). Другие символы (одиночные и парные кавычки, вопросительный знак и наклонная черта влево) имеют в языке специальное назначение. В программах нельзя использовать ни один из этих символов непосредственно. Для их представления как символов используется управляющая последовательность (escape sequence), начинающаяся с символа наклонной черты влево.
В языке С++ определены следующие управляющие последовательности.
Новая строка (newline) | >\n | Горизонтальная табуляция (horizontal tab) | >\t | Оповещение, звонок (alert) | >\a |
Вертикальная табуляция (vertical tab) | >\v | Возврат на один символ (backspace) | >\b | Двойная кавычка (double quote) | >\" |
Наклонная черта влево (backslash) | >\\ | Вопросительный знак (question mark) | >\? | Одинарная кавычка (single quote) | >\' |
Возврат каретки (carriage return) | >\r | Прогон страницы (formfeed) | >\f |
Управляющую последовательность используют как единый символ:
>std::cout << '\n'; // отобразить новую строку
>std::cout << "\tHi!\n"; // отобразить табуляцию,
> // текст "Hi!" и новую строка
Можно также написать обобщенную управляющую последовательность, где за >\x
следует одна или несколько шестнадцатеричных цифр или за >\
следует одна, две или три восьмеричные цифры. Так можно отобразить символ по его числовому значению. Вот несколько примеров (подразумевается использование набора символов Latin-1):
>\7
(оповещение)> \12
(новая строка) >\40
(пробел)
>\0
(нулевой символ) >\115
(символ >'M'
)> \x4d
(символ >'M'
)
Как и управляющие последовательности, определенные языком, такой синтаксис можно использовать вместо любого другого символа:
>std::cout << "Hi \x4dO\115!\n"; // выводит Hi MOM! и новую строку
>std::cout << '\115' << '\n'; // выводит M и новую строку
Обратите внимание: если символ >\
сопровождается более чем тремя восьмеричными цифрами, то ассоциируются с ним только первые три. Например, литерал >"\1234"
представляет два символа: символ, представленный восьмеричным значением 123, и символ 4. Форма >\x
, напротив, использует все последующие шестнадцатеричные цифры; литерал