×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 34 из 714 Настройки

>'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, напротив, использует все последующие шестнадцатеричные цифры; литерал