Wszystko, co musisz wiedzieć o ciągach znaków w C ++



W tym artykule znajdziesz szczegółową i wszechstronną wiedzę na temat ciągów znaków w C ++, a także przykłady różnych operacji.

Termin oznacza uporządkowany ciąg znaków. Sekwencję znaków można przedstawić za pomocą obiektu klasy w C ++. Klasa, która zawiera definicję, jest nazywana klasą String. Klasa String przechowuje znaki jako ciąg bajtów z funkcjonalnością umożliwiającą dostęp do znaku jednobajtowego. W C ++ ograniczniki otaczające są cudzysłowami. W tym artykule „Ciągi znaków w C ++” omówię następujące tematy:

jak wyjść z metody w java

Klasa ciągów i różnica w tablicy znaków

Klasa string Tablica znaków
Klasa String to klasa, która definiuje obiekty, które mogą być reprezentowane jako strumień znakówTablica znaków to po prostu tablica znaków.
W przypadku łańcuchów pamięć jest przydzielana dynamicznie, dzięki czemu można przydzielić więcej pamięci na żądanie w czasie wykonywaniaRozmiar tablicy znaków musi być przydzielany statycznie, dlatego w razie potrzeby nie można przydzielić większej ilości pamięci w czasie wykonywania
Klasa String definiuje szereg funkcjonalności, które pozwalają na wielorakie operacje na łańcuchach.Tablica znaków nie oferuje wielu wbudowanych funkcji do manipulowania napisami
Ciągi znaków są wolniejsze w porównaniu z implementacją niż tablica znaków.Implementacja tablicy znaków to szybciej.

Zadeklaruj i zainicjuj ciągi w C ++

strings-in-c++Inicjalizacja łańcucha w C ++ jest całkiem prosta !. Możemy użyć jednej z następujących metod.





przy użyciu ciągu znaków std przestrzeni nazw std_string

lub

std :: string std_string
#include using namespace 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 }

Wynik:



Hello by ch Hello by st Hello by std_st

W tym przykładzie pokazaliśmy zarówno tablicę znaków (ch), jak i ciąg clmetody inicjalizacji ass (st i std_st). Najpierw użyliśmy metody tablicy znaków, definiując tablicę znaków ch [12], która zawiera 12 elementów i kończy się znakiem null. W drugiej części wykorzystaliśmy metodę klasy string.

Operacje na ciągach w C ++

Zaletą używania klasy string jest to, że istnieje kilka wbudowanych funkcji w C ++ do manipulowania nimi. Dzięki temu programowanie jest łatwe i efektywne. Zajmijmy się niektórymi ważnymi funkcjami manipulacji na łańcuchach i zrozummy je, patrząc na kilka przykładów.

Rozmiar sznurka: Do zwrócenia rozmiaru obiektu można użyć metod size () i length ().



koszt<< st.length() <

Wynik:

11 11

Łączenie ciągów: Możemy połączyć dwa lub więcej ciągów, używając po prostu operatora + między nimi

string new_string = st + 'i' + std_st cout<< new_string <

Wynik:

Hello by st i Hello by std_st

Dołączanie ciągów: Funkcja składowa klasy .append (string) może służyć do łączenia i dołączania ciągu znaków w określonej lokalizacji znaku w ciągu. Jeśli programista umieści str.append (str1, p, n), oznacza to, że n liczba znaków z pozycji p w łańcuchu str1 zostanie dołączonych do końca ciągu.

string str = 'Lubię się uczyć' string str1 = 'Python, C ++ lub C' str.append (str1, 8, 3) cout<< str << endl

Wynik:

Lubię uczyć się C ++

Wyszukiwanie ciągów: Możemy użyć funkcji składowej find (), aby znaleźć pierwsze wystąpienie ciągu w innym. Funkcja find () wyszuka igłę struny w stosie siana, zaczynając od pozycji pos i zwróci pozycję pierwszego wystąpienia igły. Funkcja rfind () działa podobnie, z tą różnicą, że zwraca ostatnie wystąpienie przekazanego ciągu.

string haystack = 'Witaj świecie!' igła sznurkowa = 'o' cout<< haystack.find(needle)<

Wynik:

4 4 7 4294967295

Pierwsze polecenie cout po prostu wypisze „4”, które jest indeksem pierwszego wystąpienia „o” w ciągu stogu siana. Jeśli chcemy, aby „o” w „świecie”, zmodyfikować „pos”, aby wskazywało poza pierwsze wystąpienie. haystack.find (igła, 4) zwróci ponownie 4, podczas gdy haystack.find (igła, 5) zwróci 7. Jeśli podciąg nie zostanie znaleziony, funkcja find () zwróci std :: string :: npos.

jak używać mocy w java

Npos to specjalna wartość równa maksymalnej wartości reprezentowanej przez typ typ_rozmiaru. Tutaj jest to 4294967295. Zwykle jest używany albo jako wskaźnik końca łańcucha przez funkcje, które oczekują indeksu łańcucha, albo jako wskaźnik błędu przez funkcje zwracające indeks łańcucha.

Ten prosty kod wyszukuje w ciągu znaków wszystkie wystąpienia „C ++” w str2 i wypisuje ich pozycje:

string str2 = 'C ++ jest zorientowanym obiektowo językiem programowania i zawiera klasy, dziedziczenie, polimorfizm, abstrakcję danych i hermetyzację. C ++ umożliwia obsługę wyjątków, a przeciążanie funkcji, które nie jest możliwe w C. C ++, jest językiem o dużej mocy, wydajności i szybkości. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Wynik:

Znaleziono wystąpienie „C ++” na pozycji 0 Znaleziono wystąpienie „C ++” na pozycji 132 Znaleziono wystąpienie „C ++” na pozycji 217
#include using namespace std class base {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 () // Późne wiązanie (RTP) ptr-> fun_3 () // Późne wiązanie (RTP) ptr-> fun_4 () // Wczesne wiązanie, ale to wywołanie funkcji jest // niedozwolone (powoduje błąd), ponieważ wskaźnik // jest typu bazowego i funkcji jest // klasy pochodnej // p-> fun_4 (5)}

Wynik:

klasa podstawowa funkcja 1 klasa pochodna funkcja 2 klasa podstawowa funkcja 3 klasa podstawowa funkcja 4

W ten sposób kończymy ten artykuł o ciągach znaków w C ++. Mam nadzieję, że rozumiesz różne operacje, które można na nim wykonać. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z kursem Java Training autorstwa Edureka, zaufanej firmy zajmującej się nauczaniem online. Edureka's szkolenie i kurs certyfikacyjny mają na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a skontaktujemy się z Tobą tak szybko, jak to możliwe.