Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection5.doc
Скачиваний:
18
Добавлен:
17.12.2018
Размер:
144.9 Кб
Скачать

6.3.2 Функции, объявленные в библиотеке string.H

Стандартная библиотека для работы со строками содержит много полезных функций (объявляемых в string.h), разработанных коллективными усилиями многих программистов на С. Далее рассмотрим некоторые (ни в коей мере не все) функции, объявленные в библиотеке string.h.

Присвоение значений строкам

C++ поддерживает два способа присвоения значений строкам. Возможно присвоить строковой переменной строковую константу, произведя так называемую инициализацию при объявлении строки. Этот метод прост: требуется операция присваивания и строковая константа.

Инициализация строки

Общий метод инициализации строки:

char stringVar[stringSize] = stringLiteral;

Пример:

char a3tring[20] = "C++ in 5 Lectures !";

char Named[11] = "Ivan Ivanov";

Второй способ присвоить значение строке — это вызвать функцию, которая копирует содержимое одной строки в другую, не забывая при этом и нуль-символ. Эта функция называется strcpy. Она предполагает, что копируемая строка оканчивается специальным символом null и прекращает копирование, как только встретит этот символ (подразумевается, что строка - это массив, элементы которого имеют тип char; число элементов в массиве равно числу символов в строчном литерале плюс один, поскольку символ null (отметка конца строки) также считается элементом массива).

Функция strcpy

Прототип функции strcpy таков:

char* strcpy(char *target, const char *source);

(В правильно написанных программах на C++ каждую функцию перед использованием необходимо объявлять. Это делается с помощью прототипа функции. В языке C++ прототипы обязательны. Прототипы дают компилятору возможность тщательнее выполнять проверку типов. Если используются прототипы, то компилятор может обнаружить любые сомнительные преобразования типов аргументов, необходимые при вызове функции, если тип ее параметров отличается от типов аргументов. При этом будут выданы предупреждения об всех таких сомнительных преобразованиях. Компилятор также обнаружит различия в количестве аргументов, использованных при вызове функции, и в количестве параметров функции.

В общем виде прототип функции выглядит следующим образом:

тип функции имя функции(тип имя параметра_1, …., тип имя параметра_n);

Использование имен параметров не обязательно. Однако они дают возможность компилятору при наличии ошибки указать имена, для которых обнаружено несоответствие типов, так что имеет смысл все же указать эти имена – в конечном счете это позволит сэкономить время на отладку программы).

Функция копирует строку source в строку target. Функция предполагает, что целевая строка имеет размер, достаточный для того, чтобы вместить содержимое строки-источника.

Пример:

char name[10];

strcpy(name, "C++ 5");

Переменная name содержит строку "C++ 5".

Функция strdup

Функция strdup копирует одну строку в другую, при этом отводит необходимое количество памяти для целевой строки.

Прототип функции strdup таков:

char* strdup(const char *source);

Функция копирует строку source и возвращает указатель на строку-копию.

Пример:

char *string1 = "Геологи из МГУ";

char *string2;

string2 = strdup(string1);

После того, как будет отведено необходимое количество памяти для строки string2, строка string1 будет скопирована в строку string2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]