Бьерн Страуструп - Язык программирования С++. Главы 2-4
Страница 22. Строки



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'

 
« Предыдущая статья   Следующая статья »