Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб 5_ Операции с массивами.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
324.61 Кб
Скачать

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.