Специальные функции для работы со строками в С++. Функции проверки и преобразования символов

Страницы работы

Содержание работы

Пояснения к работе

               В С++ нет специального типа данных. Которые можно использовать для описания символьных строк, последнее хранятся в памяти ЭВМ в виде массивов символов. Так, например, описание

char str[]=”Это строка символов”

определяет массив двадцати элементов типа char, т.е. под  эту строку выделяется 20 байт памяти. Если подсчитать, то символов всего 19 (считая и пробелы). Дело в том, что каждая строка автоматически (без вмешательства пользователя) завершается нуль-символом '\0', эквивалентным числу 0.

               Обращение к какому –либо элементу этого массива обеспечивает доступ к отдельному символу. Адрес начала строки определяется как обычно для массива, т.е. &str[0] или str.

               С другой стороны, из-за того, что строковая константа (строка) в правой части приведенного выражения отождествляется компилятором с адресом её первого символа, правомерной является запись следующего типа:

char *pt=”Это строка символов”.

Здесь описывается указатель pt на переменную символьного типа, и в него заносится адрес начала строки. Теперь доступ к началу второго слова строки «строка» можно осуществить двумя способами: str[4] или *(pt+4).

               В стандартной библиотеке С имеется специальные функции для работы со строками. В качестве аргументов таких функций используются указатели, содержащие адреса этих строк! Так, для вывода на экран терминала приведённой строки можно использовать следующие варианты:

puts(pt); printf(“%s”,pt), puts(str).

Функция puts(pt+4) выведет на экран усеченную исходную строку в виде «строка символов».

               Можно любую строку вывести и посимвольно. Организовав цикл:

for(i=0;i<=srtlen(str);i++) printf(“%c”,str[i]);

               По определению массива, его элементы должны быть однотипными и одного «размера». Предположим, требуется определить массив для представления списка фамилий (например, студентов группы). Если определять его как двумерный массив типа char, то это приведет к нерациональному использованию памяти. Действительно, предположим. Что длина каждой фамилии не превышает 19 символов (букв), и проведем инициализацию массива (при определении массива предельный размер самого левого индекса можно не указывать).

сhar spisok[][20]={“Иванов”,”Петров”,”Сидоров”};

               В массиве spisok три элемента, каждый из них длиной 20 байт, т.е. общий объем памяти, занимаемой массивом, составляет 60 байт.

               При определении и инициализации теми же символьными строками одномерного массива типа char память распределяется рациональнее:  

char *pt[ ]={“Иванов”,”Петров”,”Сидоров”};

Здесь мы определили массив указателей типа char из трех элементов. Для них выделяется 3*sizeof(char *) байтов. Кроме того, компилятор размещает три строковые константы (строки) «Иванов» (7 байт), «Петров» (7 байт), «Сидоров» (8 байт), адреса которых содержаться в указателях pt[0], pt[1], pt[2]. Очевидно, что второй способ сохранения списка фамилий (строк) более экономичный.

            ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКАМИ

(ФАЙЛЫ – string.h, stdlib.h, stdio.h)

atof(str), atoi(str), atol(l)

 – преобразует строку str

 в вещественное (типа double),

 в целое или длинное целое число

 соответственно;

gets(str)

 – позволяет вводить

 строку str при наличии

в ней пробелов, ввод

заканчивается нажатие

 клавиши ENTER;

scanf(str)

 – со спецификатором ввода

 % позволяет вводить с клавиатуры

 строку str до первого пробельного

 символа, ввод заканчивается нажатием

клавиши ENTER;

strcat(str,str2)

– присоединяет строку str2 к строке str1,

получившаяся строка автоматически завершается

 нулевым байтом. Конечный нулевой байт, первоначально

завершающий строку str1, перезаписывается первым

символом строки str2. Помните, что при выполнении

 операции с символьными массивами контроль

 нарушения их границ не выполняется, поэтому

программист должен сам позаботится

 о достаточно большом размере массива str1,

 позволяющем вместить как его исходное

 содержимое, так и содержимое массива str2.

 В противном случае поведение функции strcat()

не определено;

strchr(str, int c

) – ищет в строке str первое

 вхождение сивола c, возращает

указатель на этот символ в строке str,

если символ с в строке не обнаружится, функция

 возращает 0 (см. также функцию strrchr(str, int c);

strcmp(str1,str2)

– сравнивает строки str1 и str2 и возвращает

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Отчеты по лабораторным работам
Размер файла:
52 Kb
Скачали:
0