Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет60/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   56   57   58   59   60   61   62   63   ...   256
2.4.4 Строки 
Строка - это последовательность символов, заключенная в двойные кавычки: 
"это строка" 
Каждая строка содержит на один символ больше, чем явно задано: все строки оканчиваются нулевым 
символом ('\0'), имеющим значение 0. Поэтому 
sizeof("asdf")==5; 
Типом строки считается "массив из соответствующего числа символов", поэтому тип "asdf" есть char[5]. 
Пустая строка записывается как "" и имеет тип char[1]. Отметим, что для любой строки s выполняется 
strlen(s)==sizeof(s)-1, поскольку функция strlen() не учитывает завершающий символ '\0'. 
Внутри строки можно использовать для представления невидимых символов специальные комбинации 
с \. В частности, в строке можно задать сам символ двойной кавычки " или символ \. Чаще всего из таких 
символов оказывается нужным символ конца строки '\n', например: 
cout << "звуковой сигнал в конце сообщения\007\n" 
Здесь 7 - это значение в ASCII символа BEL (сигнал), который в переносимом виде обозначается как \a. 
Нет возможности задать в строке "настоящий" символ конца строки: 
"это не строка, 
а синтаксическая ошибка" 
Для большей наглядности программы длинные строки можно разбивать пробелами, например: 
char alpha[] = "abcdefghijklmnopqrstuvwxyz" 
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
Подобные, подряд идущие, строки будут объединяться в одну, поэтому массив alpha можно 
эквивалентным образом инициализировать с помощью одной строки: 
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
В строке можно задавать символ '\0', но большинство программ не ожидает после него встречи с 
какими-либо еще символами. Например, строку "asdf\000hjkl" стандартные функции strcpy() и strlen() 
будут рассматривать как строку "asdf". 
Если вы задаете в строке последовательностью восьмеричных цифр числовую константу, то разумно 
указать все три цифры. Запись этой строки и так не слишком проста, чтобы еще и раздумывать
относится ли цифра к числу или является отдельным символом. Для шестнадцатеричных констант 
используйте два разряда. Рассмотрим следующие примеры: 
char v1[] = "a\x0fah\0129"; // 'a' '\xfa' 'h' '\12' '9' 
char v2[] = "a\xfah\129"; // 'a' '\xfa' 'h' '\12' '9' 
char v3[] = "a\xfad\127"; // 'a' '\xfad' '\127' 
2.4.5 Нуль 
Нуль (0) имеет тип int. Благодаря стандартным преобразованиям ($$R.4) 0 можно использовать как 


Бьерн Страуструп.
Язык программирования С++ 
 
64 
константу целого типа, или типа с плавающей точкой, или типа указателя. Нельзя разместить никакой 
объект, если вместо адреса указан 0. Какой из типов нуля использовать, определяется контекстом. 
Обычно (но необязательно) нуль представляется последовательностью разрядов "все нули" 
подходящей длины. 


Достарыңызбен бөлісу:
1   ...   56   57   58   59   60   61   62   63   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет