Опубликован: 02.02.2011 | Уровень: для всех | Доступ: свободно
Лекция 9:
Функции для работы со строками
Пример 2.
//Программа демонстрирует работу функций из файла string.h #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]){ char st[50],sp[100],str[]="", si[]="qwerty", sl[]="qwerty", sw[]="qwertyu"; int len=0, sravn1, sravn2, sravn3, kol=5; printf("Введите строку: "); gets(st); len=strlen(st); printf("Длина строки = %d\n",len); printf("Конкатенация строк: %s\n",strcat(st,"12cdb")); sravn1=strcmp(si,sl); printf("Сравнение строк: %s==%s результат %d\n", si,sl,sravn1); sravn2=strcmp(si,sw); printf("Сравнение строк: %s<%s результат %d\n", si,sw,sravn2); sravn3=strcmp(sw,si); printf("Сравнение строк: %s>%s результат %d\n", sw,si,sravn3); printf("Копирование байтов: %s\n",strcpy(sp,st)); printf("Преобразование букв нижнего регистра в верхний: %s\n", strupr(st)); printf("Преобразование букв верхнего регистра в нижний: %s\n", strlwr(st)); printf("Копирование %d символов в другую строку: %s\n", kol,strncpy(str,st,kol)); printf("Поиск в строке первого появления символа из другой строки: %s\n",strpbrk(st,si)); printf("Поиск в строке последнее вхождение заданного символа: %s\n",strrchr(st,'t')); system("pause"); return 0; }
Пример 3.
//Поиск множества неповторяющихся символов строки #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]){ char st[80]; int i,j,flag,len; printf("Введите строку: "); gets(st); len=strlen(st); //длина строки printf("Неповторяющиеся символы строки образуют множество: "); for (i=0;i<len;i++){ flag=0; //флаг проверки на совпадение for (j=0;j<i;j++) //сравнение символа с предыдущими if (st[i]==st[j]) flag=1; if (flag==0)printf("%c",st[i]); } system("pause"); return 0; }
Пример 4.
/*Удаление лишних левых и внутренних пробелов в строке при выводе*/ #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]){ char st[80]; int i=0,len; printf("Введите строку: "); gets(st); len=strlen(st);//длина строки printf("Преобразованная строка: "); //Удалены лишние пробелы слева while (st[i++]==' '); //Удалены лишние пробелы внутри строки for (--i;i<len;i++) if ((st[i]!=' ')||(st[i+1]!=' ')) printf("%c",st[i]); //если рядом два пробела system("pause"); return 0; }
Ключевые термины
Конкатенация строк – это результат последовательного соединения строк.
Лексикографический порядок – правило сравнения символов, основанное на величине кода внутреннего представления каждого символа.
Пустая строка – это строка единичной длины, содержащая только символ конца строки.
Сравнение строк – это результат проверки выполнения отношения "больше", "меньше" или "равно" над строками.
Стандартные функции по работе со строками – это функции обработки строк, прототипы которых входят в стандартные библиотеки С++.
Краткие итоги
- Для работы со строками в языке С++ предусмотрены стандартные функции, прототипы которых включены в стандартные библиотеки stdlib.h и string.h.
- При обращении к функциям для работы со строками следует учитывать, что изменение значений элементов строк сохраняются после завершения работы функции.
- Перед использованием строки в программном коде ее необходимо проинициализировать. Неинициализированные строки могут привести к некорректной работе программы.
- В некоторых стандартных функциях по работе со строками следует проводить контроль длин параметров.
- Результат работы некоторых функций требует принудительного добавления к строке символа конца строки.
- Значения элементов строк зависят от регистра.
- Изменение регистра символов кириллицы в программе может выполняться некорректно.