C++ Функция за низ: strcpy(), strcat(), strlen(), strcmp() Пример
Какво е низ?
Низът е поредица от знаци. А C++ string е обект от класа std::string. Знаците са съхранени последователности от байтове с разрешен достъп до единичен байт.
C++ низовете разпределят паметта динамично. Повече памет може да бъде разпределена за низа по време на изпълнение, ако е необходимо. Тъй като няма предварително разпределение на паметта, няма загуба на памет. Можем да извършваме различни операции върху низове, включително сравнения, конкатенация, преобразуване и т.н.
Деклариране на низове
C++ поддържа два типа декларации на низове:
- Символен низ в стил C
- Тип клас низ
Символен низ в стил C
Този тип декларация на низове е въведен през C език за програмиране. C++ продължава да го поддържа. Това е просто едномерен масив от знаци, завършващ с нулев знак (\0). Низът, завършващ с нула, има знаци, които съставляват низа, последвани от нула.
Разгледайте декларацията на низ, дадена по-долу:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Горната декларация създава низ, който образува думата John. Думата има 4 знака, но низът е с размер 5. Допълнителното пространство позволява задържане на нулевия знак.
Използвайки правилото за инициализация на масива, можем да напишем горния израз, както следва:
char name[] = "John";
Имайте предвид, че не е нужно да поставяте нулевия знак в края на константата на низа. The C++ компилаторът автоматично ще постави '\0' в края на низа при инициализиране на масива.
std::string
Стандарт C++ библиотеката предоставя клас низ, който поддържа различни операции с низове. Записва се като std::string.
За да използваме този клас, първо трябва да го включим в нашето работно пространство с помощта на препроцесора #include, както е показано по-долу:
#include<string>
След това можем да декларираме нашия низ, използвайки ключовата дума string. Например:
string name = "John";
Горният израз ще създаде низ с име name, който да съдържа стойността 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;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включване на заглавния файл на iostream в нашия код. Това ще ни позволи да четем от и да пишем в конзолата.
- Включва пространството от имена std, за да използва неговите класове и функции, без да го извиква.
- Извикване на функцията main(), в която трябва да се добави логиката на програмата. { маркира началото на тялото на функцията main().
- Деклариране на низ от знаци и даване на име name. Низът ще съхранява стойността John. Допълнителното пространство ще съхранява нулевия знак.
- Отпечатване на текст на конзолата.
- Отпечатване на стойността на низа с име на конзолата.
- Функцията main() трябва да върне стойност, ако програмата работи добре.
- Край на тялото на функцията main().
Ето още един пример за използване на C++ стандартен низов клас:
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Guru99";
cout << "The name is : " << name << endl;
return 0;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включване на заглавния файл на iostream в нашия код. Това ще ни позволи да четем от и да пишем в конзолата.
- Включване на стандартния клас низове в нашия код.
- Включва пространството от имена std, за да използва неговите класове и функции, без да го извиква.
- Извикване на функцията main(), в която трябва да се добави логиката на програмата. { маркира началото на тялото на функцията main().
- Деклариране на низ и даване на име name. Низът ще съхранява стойността Guru99.
- Отпечатване на стойността на името на низа заедно с някакъв текст на конзолата.
- Функцията main() трябва да върне стойност, ако програмата работи добре.
- Край на тялото на функцията 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 низ2.
Пример:
Следващият пример демонстрира как да използвате горните низови функции:
#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;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включване на заглавния файл на iostream в нашия код. Това ще ни позволи да четем от и да пишем в конзолата.
- Включване на стандартния клас CString в нашия код.
- Включва пространството от имена std, за да използва неговите класове и функции, без да го извиква.
- Извикване на функцията main(), в която трябва да се добави логиката на програмата. { маркира началото на тялото на функцията main().
- Деклариране на низ от 10 знака и даване на името name1. Низът ще съхранява стойността Guru99.
- Деклариране на низ от 10 знака и даване на името name2. Низът ще съхранява стойността John.
- Деклариране на низ от 10 знака и даване на името name3.
- Деклариране на цяло число променлива на име лен.
- Копиране на низа name1 в низа name3.
- Отпечатване на стойността на низа name1 заедно с някакъв текст на конзолата. Трябва да отпечата Guru99.
- Конкатениране на низовете name2 до края на низа name1. Стойността на name1 сега е Guru99John.
- Отпечатване на стойността на низа name1 заедно с някакъв текст на конзолата. Трябва да отпечата Guru99John
- Определяне на дължината на низа с име name1 и присвояване на стойността на length на променливата len.
- Отпечатване на стойността на променливата len заедно с друг текст на конзолата.
- Функцията main() трябва да върне стойност, ако програмата работи добре.
- Край на тялото на функцията main().
Oбобщение
- Низът е поредица от знаци.
- Низовете принадлежат към стандартния клас низове в C++.
- Можем да декларираме низове, като използваме символен низ в стил C или стандартен клас низове.
- Функцията strcpy() копира един низ в друг.
- Функцията strcat() свързва два низа.
- Функцията strlen() връща дължината на низ.
- Функцията strcmp() сравнява два низа.




