Операции со строками. Строка как параметр функции.
Библ. <string.h> содержит след ф-ии работы с ф-иями. Инициализация строки Общий метод инициализации строки: char stringVar[stringSize] = stringLiteral; Пример char a3tring[81] = "Borland C++ 5 in 21 days"; char Named = "Rene Kinner"; Второй способ присвоить значение строке — это вызвать функцию, которая копирует содержимое одной строки в другую, — не забывая при этом и нуль-символ. Эта функция называется strcpy. Она предполагает, что копируемая строка оканчивается символом NUL и прекращает копирование, как только встретит этот символ. Функция strcpy Прототип функции strcpy таков: char* strcpy(char *target, const char *source); Функция копирует строку source в строку target. Функция предполагает, что целевая строка имеет размер, достаточный для того, чтобы вместить содержимое строки-источника. Пример char name[41] ; strcpy(name, "Borland C++ 5"); Функция strdup Функция strdup копирует одну строку в другую, при этом отводит необходимое количество памяти для целевой строки. Прототип функции strdup таков: char* strdup(const char *source); Функция копирует строку source и возвращает указатель на строку-копию. Пример char *string1 = "Монархия в Испании"; char *string2; string2 = strdup(string1); После того, как будет отведено необходимое количество памяти для строки string2, строка string1будет скопирована в строку string2. Функция strncpy Библиотека строковых функций предлагает также функцию strncpy, копирующую заданное количество символов из одной строки в другую. Прототип функции strncpy таков: char * strncpy(char *target, const char *source, size_t num); Функция копирует num символов из строки source в строку target. Функция не выполняет ни усечение, ни заполнение строки. Пример char str1[] = "Pascal"; char str2[] = "Hello there"; strcnpy(strl, str2, 5); Переменная strl содержит строку "Hellol". Заметьте, что символ ‘l’ строки-приемника, следующий за скопированной частью строки, сохранился. Функция strlen Функция strlen возвращает количество символов в строке, в которое не включается нуль-терминатор. Прототип функции strncpy таков: size_t strlen (const char *string) , Функция strlen возвращает длину строки string. size_t — это имя, приписанное типу unsigned int оператором typedef. Пример char str[] = "1234567890"; size_t i; i = strlen(str), Переменной i будет присвоено значение 10. Функция strcat Конкатенация строк означает их последовательное присоединение друг к другу. Прототип функции strcat таков: char *strcat(char *target, const char *source) ; Функция добавляет к содержимому целевой строки содержимое строки-источника и возвращает указатель на целевую строку. Функция предполагает, что целевая строка может вместить содержимое объединенной строки. Пример char string[81] ; strcpy(string, "Turbo"); strcat (string, " C++"); Переменная string содержит строку "Turbo C++". Функция strncat Функция strncat добавляет к содержимому целевой строки указанное количество символов из строки-источника. Прототип функции strcat : char *strncat(char *target, const char *source, size_t num); Функция добавляет к содержимому целевой строки num символов из строки-источника и возвращает указатель на целевую строку. char strl[81] = "Hello I am "; char str2[41] = "Keith Thompson"; strncat(strl, str2, 5); Функция strcmp Функция strcmp выполняет сравнение двух строк с учетом регистра символов. Прототип функции strcmp: int strcmp(const char *strl, const char *str2); Функция сравнивает строки strl и str2. Возвращает в качестве результата сравнения целую величину: < 0 когда strl меньше, чем str2; = 0 когда strl равна str2; > 0 когда strl больше, чем str2. Пример char stringl[] = "Borland C++"; char string2[] = "BORLAND C++"; i = strcmp(string1, string2);
В последнем операторе переменной i присваивается положительное значение, так как string1 больше string2 (ASCII-коды символов в нижнем регистре больше ASCII-кодов символов в верхнем.) Функция stricmp Функция stricmp выполняет сравнение двух строк, не учитывая регистра символов. Прототип функции stricmp: int stricmp(const char *strl, const char *str2); Функция сравнивает строки strl и str2, не делая различия между символами в нижнем и верхнем регистре. Возвращает в качестве результата сравнения целую величину: < 0 когда strl меньше, чем str24 = 0 когда strl равна str24 > 0 когда strl больше, чем str2. Пример char string1[] = "Borland C++"; char string2[] = "BORLAND C++"; int i = strcmp(string1, string2);
В последнем операторе переменной i присваивается значение 0, так как string1 и string2 отличаются друг от друга только регистром символов. Функция strncmp выполняет сравнение заданного количества символов двух строк с учетом регистра символов. Функция strncmp Прототип функции strncmp: int strncmp(const char *strl, const char *str2, size_t num); Функция сравнивает первые num символов строк strl и str2. Возвращает в качестве результата сравнения целую величину: < 0 когда strl меньше, чем str2; = 0 когда strl равна str2; > 0 когда strl больше, чем str2. Пример char string1[] = "Borland C++"; char string2[] = "Borland Pascal"; i = stricmp(string1, string2, 9); В последнем операторе переменной i присваивается отрицательное значение, так как значение "Borland С" меньше, чем "Borland Р". Функция strnicmp Функция strnicmp выполняет сравнение заданного количества символов двух строк без учета регистра символов. Прототип функции strnicmp : int strnicmp(const char *strl, const char *str2, size_t num); Функция сравнивает первые num символов строк strl и str2, не делая различия в регистре символов. Возвращает в качестве результата сравнения целую величину: < 0 когда strl меньше, чем str2; = 0 когда strl равна str2; > 0 когда strl больше, чем str2. Пример char string1[] = "Borland C++"; char string2[] = "BORLAND Pascal"; i = strnicmp(string1, string2, 7); Функция strlwr Прототип функции strlwr: char* strlwr (char *source) Функция преобразует символы верхнего регистра в символы нижнего регистра в строке source. Другие символы не затрагиваются. Функция возвращает указатель на строку source. Пример char str[] = "HELLO THERE"; strlwr(str); Переменная str теперь содержит строку "hello there". Функция strupr Прототип функции strupr: char* strupr(char *source) Функция преобразует символы нижнего регистра в символы верхнего регистра в строке source. Другие символы не затрагиваются. Функция возвращает указатель на строку source. Пример char str[] = "Borland C++"; strupr(str); Переменная str теперь содержит строку "BORLAND С ++". Функция strrev Прототип функции strrev: char* strrev(char *str) Функция обращает порядок символов в строке str и возвращает указатель на строку str. char str[] = "Hello"; strrev(str) ; cout « str; Будет выведено "olleH". Функция strchr Функция strchr определяет первое вхождение символа в строку. Прототип функции strchr: char* strchr(const char *target, int c) Функция находит первое вхождение символа с в строку target. Функция возвращает указатель на символ в строке target, который соответствует заданному образцу с. Если символ с в строке не обнаруживается, функция возвращает 0. Пример char str[81] = "Borland C++"; char *strPtr; strPtr = strchr(str, '+');
Указатель strPtr теперь содержит адрес подстроки "++" в строке str. Функция strrchr Функция strrchr определяет последнее вхождение символа в строке. Прототип функции strrchr: char* strrchr(const char *target, int c) Функция находит последнее вхождение символа с в строку target. Функция возвращает указатель на символ в строке target, который соответствует заданному образцу с. Если символ с в строке не обнаруживается, функция возвращает 0. Пример char str[81] = "Borland C++ is here"; char* strPtr; strPtr = strrchr(str, '+'); Указатель strPtr теперь указывает на подстроку "+ is here " в строке str. Функция Strspn Функция strspn возвращает число символов с начала строки, совпадающих с любым символом из шаблона. Прототип для функции strspn: size_t strspn(const char *target, const char *pattern) Функция strspn возвращает число символов от начала строки target, совпадающих с любым символом из шаблона pattern. Пример char str[] = "Borland C++ 5"; char substr[] = "narlBod"; int index; index = strspn(str, substr);
Этот оператор присваивает 8 переменной index, потому что первые восемь символов из str содержатся в подстроке substr. Функция strcspn Функция strcspn просматривает строку и выдает число первых символов в строке, которые не содержатся в шаблоне. Прототип функции strcspn: size_t strcspn(const char* str1, const char* str2) Функция strcspn просматривает строку str1 и выдает длину подстроки, отсчитываемой с начала строки, символы которой полностью отсутствуют в строке str2. Пример char strng[] = "The rain in Spain"; int i = strcspn(strng, " in"); Этот пример возвращает 3 (расположение первого пробела в строке strng) переменной i. Функция strpbrk Функция strpbrk просматривает строку и определяет первое вхождение любого символа из образца. Прототип функции strpbrk: char* strpbrk(const char* target, const char* pattern) Функция strpbrk ищет в строке target первое вхождение любого символа из образца pattern. Если символы из образца не содержатся в строке, функция возвращает 0. Пример char *str = "Hello there how are you"; char *substr = "hr"; char *ptr; ptr = strpbrk(str, substr); cout « ptr « endl; Вы увидите на экране строку "here how are you", потому что 'h' встречается в строке str раньше, чем 'r'. Функция strstr Прототип функции strstr: char* strstr(const char *str, const char *substr); Функция ищет в строке str первое вхождение подстроки substr. Функция возвращает указатель на первый символ найденной в строке str подстроки substr. Если строка substr не обнаружена в строке str, функция возвращает 0. Пример char str[] = "Hello there! how are you"; char substr[] = "how"; char *ptr; ptr = strstr (str, substr); cout « ptr « endl ; Это приведет к выводу строки "how are you", поскольку в строке str , была обнаружена подстрока "how". Указатель ptr содержит адрес остатка первоначальной строки, начинающегося с подстроки "how". Функция strtok Библиотека функций для работы со строками имеет функцию strtok, которая дает вам возможность разбить строку на подстроки на основании заданного набора символов-ограничителей. Подстроки иногда называются лексемами. Прототип функции strtok: char* strtok(char *target, const char * delimiters); Функция разбивает строку на лексемы, согласно символам-ограничителям, заданным в параметре delimeters. В следующем примере показано, как работать с этой функцией и как получать лексемы, на которые была разбита строка. Функция strtok вводит символ '\0' после каждой лексемы. (Опять же не забудьте сохранить копию вашей строки в другой строковой переменной.)
Библиотека <stdlib.h>. Здесь содержатся ф-ии преобразования строки в числа. 1) atoi(st) – преобр целое число строк (пр: r=atoi(“_ _ +121”) 2) atol(st)- преобр стр string в тип long 3) atof(st) – преобр в тип double Если строку нельзя преобразовать в число возвращается нуль Библ. <ctype.h>. В этой библ содержатся ф-ии для работы форматом. 1) isalpha(ch) истина если симв-буква 2) isalnum(ch) истина если симв-бук или цифра 3) iscntrl(ch) истина если симв 4) isdigit(ch) истина если симв десятич цифры 5) islower(ch) истина если строчн буква 6) ispunct (ch) истина если симв пункт 7) isspace(ch) ис если симв пустого места или пробела 8) islower(ch) опр принадл к верх рег 9) isupper(ch) преобр к верхнему регистру 10) tolower(ch) toupper(ch) перевод в ниж и верх рег Строка как параметр функции Исп. строки в качестве парам ф-ии аналогично исп массивов в др. типа, однако имя масс есть ук. на его …, а имя строки явл-ся ук.перем., следовательно его значен может изм-сяю.
Популярное: Почему стероиды повышают давление?: Основных причин три... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (231)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |