C++ | страница 46
'\b', возврат назад '\f', перевод формата '\n', новая строка '\r', возврат каретки '\t', горизонтальная табуляция '\v', вертикальная табуляция '\\', \ обратная косая (обратный слеш) '\'', одинарная кавычка ' '\"', двойная кавычка " '\0', null, пустой символ, целое значение 0
Вопреки их внешнему виду каждое является одним символом. Можно также представлять символ одно-, два или трехзначным восьмеричным числом (символ \, за которым идут восьмеричные цифры), или одно-, два или трехзначным шестнадцатеричным числом (\x, за которым идут шестнадцатеричные цифры). Например:
'\6' '\x6' 6 ASCII ack '\60' '\x30' 48 ASCII '0' '\137' '\x05f' 95 ASCII '_'
Это позволяет представлять каждый символ из машинного набора символов, и в частности вставлять такие символы в символьные строки (см. следующий раздел). Применение числовой записи для символов делает программу непереносимой между машинами с различными наборами символов.
2.4.4 Строки
Строковая константа – это последовательность символов, заключенная в двойные кавычки "
«это строка»
Каждая строковая константа содержит на один символ больше, чем кажется; все они заканчиваются пустым символом '\0' со значением 0. Например:
sizeof(«asdf»)==5;
Строка имеет тип «вектор из соответствующего числа символов», поэтому «asdf» имеет тип char[5]. Пустая строка записывается "" (и имеет тип char[1]). Заметьте, что для каждой строки s strlen(s)==sizeof(s)-1, поскольку strlen() не учитывает завершающий 0.
Соглашение о представлении неграфических символов с обратной косой можно использовать также и внутри строки. Это дает возможность представлять двойные кавычки и escape-символ. Самым обычным символом этого рода является, безусловно, символ новой строки '\n'. Например:
cout «„ «гудок в конце сообщения\007\n“
где 7 – значение ASKII символа bel (звонок).
В строке невозможно иметь «настоящую» новую строку:
«это не строка, а синтаксическая ошибка»
Однако в строке может стоять обратная косая, сразу после которой идет новая строка; и то, и другое будет проигнорировано. Например:
cout «„ «здесь все \ ok“
напечатает
здесь все ok
Новая строка, перед которой идет escape (обратная косая), не приводит к появлению в строке новой строки, это просто договоренность о записи.
В строке можно иметь пустой символ, но большинство программ не будет предполагать, что есть символы после него. Например, строка «asdf\000hjkl» будет рассматриваться стандартными функциями, вроде strcpy() и strlen(), как «asdf».