- •5.1. Что такое массив?
- •Int myArray[100];
- •5.2. Многомерные массивы
- •5.3. Инициализация массивов
- •5.4. Определение числа элементов массива
- •5.5. Операции с массивами
- •5.5.1. Ввод и вывод массива
- •5.5.2. Поиск минимального (максимального) элемента массива
- •5.5.3. Поиск в массиве заданного элемента
- •5.5.4. Сортировка массива
- •5.6. Строки
- •5.6.1. Основы техники строк
- •5.6.2. Некоторые библиотечные функции обработки строк
- •5.6.3. Примеры обработки строк
- •5.7. Массивы строк
- •5.7.1. Пример использования массива строк
5.6. Строки
Безусловно, наиболее важным применением одномерных массивов является создание символьных строк. С++ поддерживает строки двух видов. Первый, наиболее часто используемый, — это строка с завершающим нулем или, другими словами, массив символов, заканчивающийся нулем. Строка с завершающим нулем содержит символы, образующие эту строку, за которыми помещается ноль. Такие строки пользуются чрезвычайно широко, так как они обеспечивают высокий уровень эффективности и предоставляют программисту возможность выполнять разнообразные строковые операции. Когда программист на С++ использует термин "строка", он (или она) обычно имеет в виду и именно строку с завершающим нулем. Второй вид строк, определенный в С++ — это класс string, который входит в библиотеку классов С++. Таким образом, string не является встроенным типом. Класс string позволяет использовать объектно-ориентированный подход при обработке строк, однако он используется не так широко, как строка с завершающим нулем. Здесь мы рассмотрим первый вид строк.
5.6.1. Основы техники строк
Объявляя символьный массив, который будет содержать строку с завершающим нулем, нужно задать ему длину на один символ больше, чем у самой длинной помещаемой в него строки. Если, например, вы хотите объявить массив str, в котором будет находиться 10-символьная строка, то вы должны написать следующее:
char str[11] ;
Задание величины 11 в качестве длины массива обеспечит в строке место для завершающего нуля.
Как вы уже знаете, С++ позволяет определять символьные константы. Символьная константа представляет собой список символов, заключенный в двойные кавычки. Вот несколько примеров:
“Hello!” “I like C++” “Mars” “”
Добавлять ноль в конец строки вручную нет необходимости; компилятор С++ сделает это сам. В результате строка "Mars" будет выглядеть в памяти таким образом:
Последняя строка в нашем примере выглядит как "". Такая строка называется нулевой строкой. Она содержит только завершающий ноль и больше ничего. Нулевые строки используются в программах в качестве пустых строк.
5.6.2. Некоторые библиотечные функции обработки строк
С++ поддерживает широкий диапазон функций для манипуляций со строками. Самые известные из них:
strcpy( )
strcat( )
strcmp( )
strlen( )
Все строковые функции используют один и тот же заголовок <cstring>. Рассмотрим эти функции подробнее.
Вызов функции strcpy( )выглядит таким образом:
strcpy (куда, откуда)
Функция strcpy( ) копирует содержимое строки откуда в строку куда. Не забывайте, что массив, образующий куда, должен иметь достаточный размер, чтобы в него поместилась строка откуда. Если места в нем не хватит, то произойдет выход за пределы массива куда, что скорее всего, приведет к аварийному завершению программы.
Вызов функции strcat( )выглядит таким образом:
strcat(s1,s2);
Функция strcat() присоединяет строку s2 к концу s1; строка s2 остается без изменений. Вы должны обеспечить достаточно большой размер строки s1, чтобы она могла вместить как свое исходное содержимое, так и содержимое s2.
Вызов функции strcmp( )выглядит таким образом:
strcmp(s1,s2);
Функция strcmp() сравнивает две строки и возвращает 0, если они равны. Если s1 больше s2 лексикографически (т. е. по порядку следования символов алфавита), возвращается положительное число; если она меньше s2, возвращается отрицательное число.
При использовании strcmp() важно иметь в виду, что при равенстве строк она возвращает false. Таким образом, если вы хотите, чтобы что-то произошло при равенстве строк, вам придется использовать оператор !. В следующем примере условие, управляющее предложением if, истинно, если str равна строке "С++":
if(!strcmp(str, "С++") cout << "str = С++";
Общая форма вызова функции strlen( ) такова:
strlen(s);
Здесь s — это строка. Функция strlen() возвращает длину строки, на которую указывает s.
