Выбрать главу
Некоторые библиотечные функции обработки строк

Язык C++ поддерживает множество функций обработки строк. Самыми распространенными из них являются следующие.

strcpy()

strcat()

strlen()

strcmp()

Для вызова всех этих функций в программу необходимо включить заголовок <cstring>. Теперь познакомимся с каждой функцией в отдельности.

Функция strcpy()

Общий формат вызова функции strcpy() таков:

strcpy (to, from);

Функция strcpy() копирует содержимое строки from в строку to. Помните, что массив, используемый для хранения строки to, должен быть достаточно большим, чтобы в него можно было поместить строку из массива from. В противном случае массив to переполнится, т.е. произойдет выход за его границы, что может привести к разрушению программы.

Использование функции strcpy() демонстрируется в следующей программе, которая копирует строку "Привет" в строку str.

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

 char str[80];

 strcpy(str, "Привет");

 cout << str;

 return 0;

}

Функция strcat()

Обращение к функции strcat() имеет следующий формат.

strcat(s1, s2);

Функция strcat() присоединяет строку s2 к концу строки s1, при этом строка s2 не изменяется. Обе строки должны завершаться нулевым символом. Результат вызова этой функции, т.е. результирующая строка s1 также будет завершаться нулевым символом. Использование функции strcat() демонстрируется в следующей программе, которая должна вывести на экран строку "Привет всем!".

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

 char s1[20], s2[10];

 strcpy(s1, "Привет");

 strcpy(s2, " всем!");

 strcat (s1, s2);

 cout << s1;

 return 0;

}

Функция strcmp()

Обращение к функции strcmp() имеет следующий формат:

strcmp(s1, s2);

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

Использование функции strcmp() демонстрируется в следующей программе, которая служит для проверки правильности пароля, введенного пользователем (для ввода пароля с клавиатуры и его верификации служит функция password()).

#include <iostream>

#include <cstring>

#include <cstdio>

using namespace std;

bool password();

int main()

{

 if(password()) cout << "Вход разрешен.\n";

 else cout << "В доступе отказано.\n";

 return 0;

}

// Функция возвращает значение true, если пароль принят, и значение false в противном случае.

bool password()

{

 char s[80];

 cout << "Введите пароль: ";

 gets(s);

 if(strcmp(s, "пароль")) { // Строки различны.

  cout << "Пароль недействителен.\n";

  return false;

 }

 // Сравниваемые строки совпадают.

 return true;

}

При использовании функции strcmp() важно помнить, что она возвращает число 0 (т.е. значение false), если сравниваемые строки равны. Следовательно, если вам необходимо выполнить определенные действия при условии совпадения строк, вы должны использовать оператор НЕ (!). Например, при выполнении следующей программы запрос входных данных продолжается до тех пор, пока пользователь не введет слово "Выход".