Смекни!
smekni.com

Модульное программирование 3 (стр. 3 из 4)

При задании длины строки необходимо учитывать завершающий нуль символ. Строки при описании можно иниц.строковыми константами при этом нуль символ формируется автом-ки.

Для размещения строки в динам. пам. надо описать ук. на char, а затем выделить пам. с пом. new.(пр: char *p=newchar[m])

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

Вв/вывстрок.

#include <iostream.h>

int main()

{const int n=80;

char s[n];

cin>>s;

cout<<s;

return 0;}

Если будем вв стр. из неск. слов, то будет выв. только первое. Это связанно с тем, что вв вып только до перого пробельного слова. Если требуется вв строку из неск слов в одну стр. перем. исп. метод get и getline класса istream объектом кот. явл cin.

пример:…

Символ перевода строки так же считывается, но не запис в перем., а запис в нуль симв. Метод get работает аналогично, но оставляет символ перевода строки. Чтобы удалить его из потока необходимо вызвать cin.get без парам(). Если необх. вв неск строк, то метод getline исп в цикле.(пр.:while(cin.getline(s,n))

Для вв/выв строк можно исп. след ф-ии Си: gets, puts. (пр: gets(s))

Для вв/выв 1 симв. исп. getchar(), putchar().

21. Операции со строками. Строка как параметр функции.

Библ. <string.h> содержит след ф-ии работы с ф-иями.

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

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

char stringVar[stringSize] = stringLiteral;

Пример

char a3tring[81] = "Borland C++ 5 in 21 days";

charNamed = "ReneKinner";

Второй способ присвоить значение строке — это вызвать функцию, ко­торая копирует содержимое одной строки в другую, — не забывая при этом и нуль-символ. Эта функция называется 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содержит строку "TurboC++".

Функция 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 теперь содержит строку "hellothere".

Функция strupr

Прототип функции strupr:

char* strupr(char *source)

Функция преобразует символы нижнего регистра в символы верх­него регистра в строке source. Другие символы не затрагиваются. Функ­ция возвращает указатель на строку source.

Пример

char str[] = "Borland C++";

strupr(str);

Переменная str теперь содержит строку "BORLAND С ++".

Функция strrev

Прототип функции strrev:

char* strrev(char *str)

Функция обращает порядок символов в строке str и возвращает указатель на строку str. charstr[] = "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 теперь указывает на подстроку "+ ishere " в строке 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.