Шаг 60.
Строки

    На этом шаге мы напомним общие положения организации и использования строковых переменных.

    Строки предназначены для ввода, обработки и вывода символьной информации.

    Строковая константа - это последовательность из нуля или более символов, заключенных в кавычки. Кавычки не являются частью строковой константы, а служат только для ее ограничения.

    Строки представляются в виде массива элементов типа char. Это означает, что символы строки можно представить расположенными в соседних ячейках памяти - по одному символу в ячейке. Но массив символов - не всегда строка!

    В качестве примера рассмотрим следующую строку: "Символьная строка". Кавычки не являются частью строки. Они вводятся для того, чтобы отметить ее начало и конец, то есть играют ту же роль, что и апострофы в случае одиночного символа (каждая ячейка - 1 байт).


Рис.1. Схема размещения в памяти элементов строки

    Необходимо отметить, что на рисунке последним элементом массива является символ '\0'. Это нуль-символ: в языке C++ он используется для того, чтобы отмечать конец строки. Нуль-символ - не есть цифра 0; он не выводится на печать и в таблице кодов ASCII имеет номер 0. Наличие нуль-символа означает, что количество ячеек массива должно быть по крайней мере на одну больше, чем количество символов, которые необходимо размещать в памяти.

    Не следует путать символьную константу со строкой, содержащей один символ: 'Х' - это не то же самое, что "Х". В первом случае - это отдельный символ. Во втором случае - это строка, состоящая из одного символа (буквы Х) и символа конца строки '\0'.

    Для представления внутри строки символа "кавычка", перед ней нужно располагать символ '\'. Точно так же можно получить представление и других управляющих символов внутри строки. Например, '\' и непосредственно следующий за ним символ перевода строки '\n' игнорируются. Это дает возможность представлять строки, не помещающиеся на одной строчке исходного текста программы. Апостроф внутри строки представляется обычным образом.

    Пример.

#include <iostream.h>
void main ()
{
      int c=0;
      while (c!=-1)
      {
         cout << "Введи число от 0 до 9 (-1 - выход): "; 
         cin >> c;
         switch (c)
         {
            case 0: cout << "this is a string\n"; break;
            case 1: cout << " \n"; break;
            case 2: cout << "В строке - русские буквы\n";
                      break;
            case 3: cout << "Апостроф выводится стандартно: '\n";
                      break;
            case 4: cout << "Кавычка:\"\n"; break;
            case 5: cout << "\255\\\n: перед двоеточием 3 символа\n";
                      break;
            case 6: cout << "Строка, расположенная на двух стр\
                               оках текста\n";
                      break;
            case 7: cout << "Вывод табулятора:\\t\n";
                      break;
            case 8: cout << "Вывод перевода каретки:\\r\n";
                      break;
            case 9: cout << "Вывод возврата на символ:\\b\n";
                      break;
         }
      }
}
Текст этой программы можно взять здесь.

    На следующем шаге рассмотрим вопросы, связанные с инициализацией строк.


Предыдущий шаг Содержание Следующий шаг