Работа со строками в С++. Синтаксис объявления строковых массивов и их
инициализация.
В прошлых уроках, Вы познакомились с различными видами массивов. Однако
сегодня мы более детально рассмотрим еще один тип массивов - строковый, так как
этот тип заслуживает особого внимания. Строки предназначены для ввода, обработки
и вывода символьной информации.
Строковая константа - это последовательность из нуля или более
символов, заключенных в кавычки. Кавычки не являются частью строковой константы,
а служат только для ее ограничения.
Строки представляются в виде массива элементов типа char. Это
означает, что символы строки можно представить расположенными в соседних ячейках
памяти - по одному символу в ячейке. Но массив символов - не всегда строка!
В качестве примера рассмотрим следующую строку: "Символьная строка".
Кавычки не являются частью строки. Они вводятся для того, чтобы отметить ее
начало и конец, то есть играют ту же роль, что и апострофы в случае одиночного
символа (каждая ячейка - 1 байт).
Необходимо отметить, что на рисунке последним элементом массива является
символ '\0'. Это нуль-символ: в языке C он используется для того,
чтобы отмечать конец строки. Нуль-символ - не есть цифра 0; он не выводится на
печать и в таблице кодов ASCII имеет номер 0. Наличие нуль-символа означает, что
количество ячеек массива должно быть, по крайней мере на одну больше, чем
количество символов, которые необходимо размещать в памяти.
Не следует путать символьную константу со строкой, содержащей один символ:
'Х' - это не то же самое, что "Х". В первом случае - это отдельный
символ. Во втором случае - это строка, состоящая из одного символа (буквы Х) и
символа конца строки '\0'.
Правила инициализации строковых массивов.
Приведем пример инициализации строкового массива:
#include <iostream>
using namespace std;
int n=5;
// Инициализация строкового массива.
char line[5] = { 'C','a','t','!','\0' };
void main ()
{
cout << "Word: ";
for (int i=0; i<n; i++)
cout << line[i];
}
|
Вышеописанный пример не слишком удобен для создания длинных строк. Кроме
того, вывод строки побуквенно в цикле выглядит довольно странно, не так ли? Для
символьных массивов существует специальный способ инициализации. Вместо фигурных
скобок и запятых можно прямо использовать строку символов, заключенных в
кавычки. При этом в описании не обязательно задавать размеры массива, поскольку
компилятор "сам" определяет его длину, подсчитывая число начальных значений. А
операция вывода cout настроена таким образом, что достаточно указать только имя
строкового массива и он тут же отобразится на экране.
#include <iostream>
using namespace std;
int n=5;
char line[] = "Cat!"; // Инициализация строкового массива.
void main ()
{
cout << "Word: ";
// Показ на экран строкового массива.
cout <<line;
}
|