Всичко, което трябва да знаете за низовете в C ++



Тази статия ще ви предостави подробни и изчерпателни познания за низовете в C ++ и също така ще даде примери за различни операции.

Срокът означава подредена последователност от символи. Поредица от символи може да бъде представена с помощта на обект от клас в C ++. Класът, който предоставя дефиниция за това, се нарича String клас. String клас съхранява символите като последователност от байтове с функционалността, позволяваща достъп до еднобайтовия символ. В C ++ заграждащите разделители са двойни кавички. В тази статия „Strings in C ++“ ще обсъждам следните теми:

Разлика между класове и символни масиви

Струнен клас Символен масив
String клас е клас, който дефинира обекти, които могат да бъдат представени като поток от символиСимволният масив е просто масив от символи.
В случай на низове паметта се разпределя динамично, като по този начин може да се разпредели повече памет по време на изпълнение при поискванеРазмерът на символния масив трябва да бъде разпределен статично, така че повече памет не може да бъде разпределена по време на изпълнение, ако е необходимо
String клас дефинира редица функционалности, които позволяват множество операции върху низове.Символният масив не предлага много вградени функции за манипулиране на низове
Низовете са по-бавни в сравнение с изпълнението от масива от символи.Внедряването на символен масив е по-бързо.

Декларирайте и инициализирайте низове в C ++

strings-in-c++Инициализацията на низ в C ++ е доста проста !. Можем да използваме някой от следните методи.





използване на пространство от имена std низ std_string

или

std :: низ std_string
#include използвайки пространство от имена std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Изход:



Здравей от ch Здравей от st Здравей от std_st

В този пример показахме както масива от знаци (ch), така и низа class (st и std_st) методи за инициализация. Първо, използвахме метода на символен масив, като дефинирахме символен масив ch [12], който съдържа 12 елемента и завършва с нулев символ. Във втората част използвахме метод на низ клас.

Операции върху низове в C ++

Предимството на използването на низ клас е, че в C ++ има няколко вградени функции за тяхното манипулиране. Това прави програмирането лесно и ефективно. Нека вземем някои важни функции за манипулиране на низове и да ги разберем, като разгледаме някои примери.

Размер на низа: За връщане на размера на обекта могат да се използват както методите size (), така и length ().



цена<< st.length() <

Изход:

11 11

Конкатенация на низове: Можем да обединим два или повече низа просто като използваме оператор + между тях

низ new_string = st + 'и' + std_st cout<< new_string <

Изход:

Здравей от st и Здравей от std_st

Добавяне на низове: Функцията за член на клас .append (низ) може да се използва за обединяване и добавяне на низ в определено местоположение на символа в низа. Ако програмист постави str.append (str1, p, n), това означава, че n брой символи от позиция p в низ str1 ще бъдат добавени в края на str.

string str = 'Обичам да уча' string str1 = 'Python, C ++ или C' str.append (str1, 8, 3) cout<< str << endl

Изход:

Обичам да уча C ++

Търсене на низове: Можем да използваме функцията find () член, за да намерим първото появяване на низ в друг. find () ще търси игла за струни в струна сено, започвайки от позиция pos и връща позицията на първото появяване на иглата. Функцията rfind () работи по подобен начин, с изключение на това, че връща последното появяване на подадения низ.

string haystack = 'Здравей, свят!' низ игла = 'o' cout<< haystack.find(needle)<

Изход:

4 4 7 4294967295

Първата команда cout просто ще отпечата „4“, което е индексът на първото появяване на „o“ в низа на сено. Ако искаме „о“ в „Свят“, трябва да модифицираме „поз“, за да сочи след първото появяване. haystack.find (игла, 4) отново ще върне 4, докато haystack.find (игла, 5) ще даде 7. Ако поднизът не бъде намерен, find () връща std :: string :: npos.

Npos е специална стойност, равна на максималната стойност, представима от типа size_type. Тук е 4294967295. Като цяло той се използва или като индикатор за края на низа от функциите, които очакват индекс на низ, или като индикатор за грешка от функциите, които връщат индекс на низ.

Този прост код търси низ за всички случаи на „C ++“ в str2 и отпечатва техните позиции:

string str2 = 'C ++ е обектно-ориентиран език за програмиране и включва класове, наследяване, полиморфизъм, абстракция на данни и капсулиране. C ++ позволява обработка на изключения, а претоварването на функции, което не е възможно в C.C ++, е мощен, ефективен и бърз език. ' за (низ :: размер_тип i = 0, tfind (tfind = wikistr.find ('C ++', i))! = низ :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Изход:

Намерена поява на „C ++“ на позиция 0 Намерена поява на „C ++“ на позиция 132 Намерена поява на „C ++“ на позиция 217
#include използвайки пространство от имена std клас база {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Късно обвързване (RTP) ptr-> fun_3 () // Късно обвързване (RTP) ptr-> fun_4 () // Ранно обвързване, но това извикване на функция е // незаконно (създава грешка), защото указателят // от основен тип и функция е от // производен клас // p-> fun_4 (5)}

Изход:

какво е apache spark vs hadoop
функция на основен клас 1 функция на производен клас 2 функция на основен клас 3 функция на основен клас 4

С това стигаме до края на тази статия за Strings в C ++. Надявам се, че сте разбрали различните операции, които могат да бъдат извършени върху него. Ако искате да научите повече, разгледайте Java Training от Edureka, доверена компания за онлайн обучение. Edureka’s курсът за обучение и сертифициране е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.