Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
s__ekzamen.docx
Скачиваний:
7
Добавлен:
18.12.2018
Размер:
113.34 Кб
Скачать

34. Функции ввода строковых переменных.

Мы будем использовать тип данных string наряду со стандартными встроенными типами данных. И вы на первый взгляд не будете замечать никаких различий, хотя на самом деле это абстрактный тип данных, созданный на основе объектно-ориентированных возможностей языка С++. Надеюсь со временем вы тоже сможете создавать АТД, которыми можно будет пользоваться так же удобно и свободно, как и классом string.

Строковый тип данных позволяет хранить строки переменной длины, причем длину можно менять в процессе выполнения программы. Строковый тип представляет операторы, выполняющие такие операции над строками, как контеканация, присваивание, замещение и др.

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

void main()

{string name="Vitaly"; // объявление, определение, инициализация

string lastname="Domnenko";

name+="M."+lastname; // конкатенация с присваиванием (накапливающее присваивание)

cout<<"My name is "<<name<<endl; // вывод }

Используя [ ] можно получить символ из любой позиции

Лексикографическое сравнение осуществляется с использованием операторов == < <= > >= !=. При лексикографическом сравнении последовательно сравниваются коды символов строки.

Ну и операторы для ввода / вывода строковых переменных >> << работают также как и для переменных других типов.

При вводе-последовательности символов с клавиатуры самой необходимой является операция присваивания введенных символов строковой переменной . В следующей программе FILLSTR.C для присваивания символов элементам строковой переменной string (массив символов) используется макрокоманда getchar. Для этого в программе просто организуется цикл, в котором элементам строки присваиваются символы до тех пор, пока не встретится символ "конец строки". По окончании цикла текущему элементу массива присваивается NULL-СИМВОЛ (маркер конца строки):

void main(void)

{char string[128];

int index = 0;

int letter;

printf("Введите строку и нажмите Enter\n");

while ((letter = getchar ( )) != '\n')

string [index++] = letter;

string[index] = NULL;

printf("Введенная строка : %s\n ", string);}

35.Основные функции обработки строковых переменных.

strcat() Добавляет строку в конец строки назначения

strcmp() Сравнивает две строки

strcmpi() Сравнивает две строки без учета регистра

strcpy() Копирует содержимое одной строки в другую

strstr() Осуществляет поиск первого вхождения подстроки в строку

strlen() Возвращает длину строки

strupr() Преобразует все символы строки к верхнему регистру

sprintf() Формирует строку на основе переменного числа парамет

Копирование

strcpy(str1, "Hello");

strcpy(str2, str1);

Сравнение строк

int stricmp(const char *string1, const char *string2);

int strcmp(const char *string1, const char *string2);

Обе функции возвращают число меньшее 0, если первая строка меньше второй, большее нуля если первая строка больше второй и 0, если строки лексикографически равны.

Длина строки

strlen(char *string);

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

char len;

len=strlen(str);

for (i=0;i<len;i++)

Для конкатенации следует использовать функции.

Есть две специальные функции:char* strcat(char* dest, const char* source)

char* strncat(char* dest, const char* source, size_t size)

Эти функции добавляют к строке , на которую указывает dest, символы из строки source. Первая версия добавляет все символы до нуль-терминатора, вторая – максимум size символов. Результирующая строка завершается нуль-терминатором.

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