На этом шаге мы напомним общие положения организации и использования
строковых переменных.
Строки предназначены для ввода, обработки и вывода символьной информации.
Строковая константа - это последовательность из нуля или более символов, заключенных в кавычки. Кавычки не являются частью строковой константы, а служат только для ее ограничения.
Строки представляются в виде массива элементов типа 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; } } }
На следующем шаге рассмотрим вопросы, связанные с инициализацией строк.