C++ Рядкова функція: strcpy(), strcat(), strlen(), strcmp() Приклад

Що таке рядок?

Рядок — це послідовність символів. А C++ string є об'єктом класу std::string. Символи — це збережені послідовності байтів із дозволеним доступом до одного символьного байта.

C++ рядки розподіляють пам'ять динамічно. За потреби рядку під час виконання можна виділити більше пам’яті. Оскільки немає попереднього розподілу пам’яті, не витрачається пам’ять. Ми можемо виконувати різні операції над рядками, включаючи порівняння, конкатенацію, перетворення тощо.

Оголошення рядків

C++ підтримує два типи оголошень рядків:

  • Рядок символів у стилі C
  • Тип класу String

Рядок символів C-Style

Цей тип оголошення рядків був введений у Мова програмування C. C++ продовжує його підтримувати. Це просто одновимірний масив символів, що закінчується нульовим символом (\0). Рядок із нульовим символом у кінці містить символи, які складають рядок, за якими слідує нуль.

Розглянемо оголошення рядка, подане нижче:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

Наведене вище оголошення створює рядок, який утворює слово John. Слово має 4 символи, але рядок має розмір 5. Додатковий пробіл дозволяє зберігати нульовий символ.

Використовуючи правило ініціалізації масиву, ми можемо записати наведений вище оператор наступним чином:

char name[] = "John";

Зауважте, що вам не потрібно розміщувати нульовий символ у кінці константи рядка. The C++ компілятор автоматично розмістить '\0' у кінці рядка під час ініціалізації масиву.

std :: рядок

Стандарт C++ бібліотека надає клас рядків, який підтримує різні операції над рядками. Він записується як std::string.

Щоб використовувати цей клас, ми повинні спочатку включити його в наш робочий простір за допомогою препроцесора #include, як показано нижче:

#include<string>

Далі ми можемо оголосити наш рядок за допомогою ключового слова string. Наприклад:

string name = "John";

Наведений вище оператор створить рядок з ім’ям для зберігання значення John.

Доступ до рядкових значень

In C++, ми можемо отримати доступ до рядкових значень за допомогою імені рядка. Наприклад:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

вихід:

Доступ до рядкових значень

Ось скріншот коду:

Доступ до рядкових значень

Пояснення коду:

  1. Включаючи файл заголовка iostream у наш код. Це дозволить нам читати з консолі та писати в неї.
  2. Включаючи простір імен std, щоб використовувати його класи та функції без його виклику.
  3. Виклик функції main(), всередину якої має бути додана логіка програми. { позначає початок тіла функції main().
  4. Оголошення рядка символів і надання йому імені. Рядок зберігатиме значення John. Додатковий пробіл зберігатиме нульовий символ.
  5. Друк тексту на консолі.
  6. Друк значення рядка з назвою name на консолі.
  7. Функція main() має повертати значення, якщо програма працює нормально.
  8. Кінець тіла функції main().

Ось ще один приклад використання C++ стандартний клас рядків:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

вихід:

Доступ до рядкових значень

Ось скріншот коду:

Доступ до рядкових значень

Пояснення коду:

  1. Включаючи файл заголовка iostream у наш код. Це дозволить нам читати з консолі та писати в неї.
  2. Включаючи стандартний клас рядків у наш код.
  3. Включаючи простір імен std, щоб використовувати його класи та функції без його виклику.
  4. Виклик функції main(), всередину якої має бути додана логіка програми. { позначає початок тіла функції main().
  5. Оголошення рядка та надання йому імені name. Рядок зберігатиме значення Guru99.
  6. Друк значення назви рядка поряд із текстом на консолі.
  7. Функція main() має повертати значення, якщо програма працює нормально.
  8. Кінець тіла функції main().

Рядкові функції в C++

Вам часто захочеться маніпулювати рядками. C++ надає широкий спектр функцій, які можна використовувати для цього. Ці функції визначені в класі CString, отже, ми повинні включити його в наш код, щоб використовувати функції. Давайте обговоримо деякі з них:

strcpy ()

Це функція копіювання рядка. Він копіює один рядок в інший.

Синтаксис:

strcpy(string1, string2);

Два параметри функції, string1 і string2, є рядками. Функція скопіює рядок string2 у string1.

strcat()

Це функція конкатенації рядків. Він об’єднує рядки.

Синтаксис:

strcat(string1, string2);

Два параметри функції, string1 і string2, є рядками, які потрібно об’єднати. Наведена вище функція об’єднає рядок string2 до кінця рядка string1.

strlen()

Це функція довжини рядка. Він повертає довжину рядка, переданого йому як аргумент.

Синтаксис:

strnlen(string1)

Параметр string1 — це ім'я рядка, довжину якого необхідно визначити. Наведена вище функція поверне довжину рядка string1.

strcmp()

Це функція порівняння рядків. Використовується для порівняння рядків.

Синтаксис:

strcmp(string1, string2);

Наведена вище функція поверне 0, якщо рядки string1 і string2 подібні, менше 0, якщо string1 string2.

приклад:

У наступному прикладі показано, як використовувати наведені вище рядкові функції:

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int  len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

вихід:

Рядкові функції в C++

Ось скріншот коду:

Рядкові функції в C++

Пояснення коду:

  1. Включаючи файл заголовка iostream у наш код. Це дозволить нам читати з консолі та писати в неї.
  2. Включення стандартного класу CString у наш код.
  3. Включаючи простір імен std, щоб використовувати його класи та функції без його виклику.
  4. Виклик функції main(), всередину якої має бути додана логіка програми. { позначає початок тіла функції main().
  5. Оголошення рядка з 10 символів і надання йому імені name1. Рядок зберігатиме значення Guru99.
  6. Оголошення рядка з 10 символів і надання йому імені name2. Рядок зберігатиме значення John.
  7. Оголошення рядка з 10 символів і надання йому імені name3.
  8. Оголошення ан ціла змінна названий лен.
  9. Копіювання рядка name1 у рядок name3.
  10. Друк значення рядка name1 поруч із текстом на консолі. Він повинен надрукувати Guru99.
  11. Конкатенація рядків name2 до кінця рядка name1. Значення name1 тепер Guru99John.
  12. Друк значення рядка name1 поруч із текстом на консолі. Він повинен надрукувати Guru99John
  13. Визначення довжини рядка з іменем name1 і присвоєння значення length змінній len.
  14. Друк значення змінної len поряд з іншим текстом на консолі.
  15. Функція main() має повертати значення, якщо програма працює нормально.
  16. Кінець тіла функції main().

Підсумки

  • Рядок — це послідовність символів.
  • Рядки належать до стандартного класу рядків у C++.
  • Ми можемо оголошувати рядки за допомогою рядка символів стилю C або стандартного класу рядків.
  • Функція strcpy() копіює один рядок в інший.
  • Функція strcat() об’єднує два рядки.
  • Функція strlen() повертає довжину рядка.
  • Функція strcmp() порівнює два рядки.