Опубликован: 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.
- При обращении к функциям для работы со строками следует учитывать, что изменение значений элементов строк сохраняются после завершения работы функции.
- Перед использованием строки в программном коде ее необходимо проинициализировать. Неинициализированные строки могут привести к некорректной работе программы.
- В некоторых стандартных функциях по работе со строками следует проводить контроль длин параметров.
- Результат работы некоторых функций требует принудительного добавления к строке символа конца строки.
- Значения элементов строк зависят от регистра.
- Изменение регистра символов кириллицы в программе может выполняться некорректно.