Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_и_Пр_Бизнес_лекции_gbi.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
873.47 Кб
Скачать

5.4. Библиотечные функции для работы с текстом

В стандартных библиотеках языка С++ содержится много полезных функций для работы со строками. Их использование позволяет сократить код программы, увеличить ее надежность, уменьшить время разработки программы. Библиотечные функции приведены в [1, 2]. Все функции рассчитаны на то, что строки заканчиваются нулевым символом. Ниже рассматриваются наиболее востребованные при обработке текста функции.

Функция strlen(s) возвращает текущую длину строки s. Для использования этой функции надо подключить к программе файл string.h.

Пример программы, определяющей является ли введенное слово палиндромом:

#include <iostream.h>

#include <conio.h>

#include <string.h>

void main()

{

char s[21]; //слово

int l, r; //левый и правый символы слова

cin>>s;

cout<<s<<endl;

l=0; //начало слова

r=strlen(s)-1; //конец слова

while(l<r && s[l]==s[r])

{

l++; //индекс левого символа

r--; //индекс правого символа

}

if( l>=r)

cout<<"Yes";

else

cout<<"No" ;

getch();

}

Тесты:

Шалаш палиндром

Тот палиндром

Таня не является палиндромом

АННА палиндром

С палиндром

Функция strcpy(s1,s2) копирует второй аргумент-строку s2 в строку s1. Размер первой строки должен быть не меньше второй, чтобы в нее скопировался 0-символ. Для использования этой функции надо подключить к программе файл string.h.

Пример использования функции:

char s1[21], s2[21];

cout<<s1<<endl; //abc

strcpy(s2,”12345”);

cout<<s2; //12345

Функция strcat(s1,s2) присоединяет к концу первой строки s1 вторую строку s2 и записывает результат в первую строку. Размер первой строки должен быть достаточен, чтобы в нее поместились две сцепленные строки и нулевой символ. Для использования этой функции надо подключить к программе файл string.h.

Пример использования функции:

char s1[10], s2[10];

cin>>s1; //abc

cin>>s2; //def

strcat(s1,s2);

cout<<s1<<endl; //abcdef

Функция strcmp(s1,s2) сравнивает две строки и возвращает число 0, если строки равны, отрицательное число, если строка s1 меньше s2 и положительное число, если строка s1 больше s2. Строки сравниваются лексиграфически (сравниваются коды соответствующих символов строк). Сравнение происходит до первого несовпадающего символа или до конца строк (если все символы строк совпадают). При лексиграфическом сравнении строка “Иванов” меньше строки “Петров”.

Пример программы сортировки по возрастанию массива из n слов (n<=20), максимальная длина слова 15 символов:

#include <iostream.h>

#include <conio.h>

#include <string.h>

void main()

{

char s[20][16]; //массив из 20 строк

char x[16]; //переменная для перестановки слов

int i, j, n; //номер слова и номер прохода

int n; //количество слов

cout<<"n? “;

cin>>n;

cout<<"s? "<<endl;

for (i=0; i<n; i++) //ввод входной строки из нескольких слов ...

cin>>s[i]; // ввод слова

for (j=1; j<n; j++) //сортировка пузырьковым методом

for (i=0; i<n-j; i++)

if(strcmp(s[i],s[i+1])>0) //сравнение слов

{//перестановка слов

strcpy(x,s[i]);

strcpy(s[i],s[i+1]);

strcpy(s[i+1],x);

}

for (i=0; i<n; i++)

cout<<s[i]<<' ';

getch();

}

Тест:

n=4, Иванов Андреев Сидоров Петров

Результат: Андреев Иванов Петров Сидоров