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
- Zadeklaruj i zainicjuj ciągi w C ++
- Operacje na ciągach w C ++
- Rozmiar sznurka
- Konkatenacja ciągów
- Dołączanie ciągów
- Wyszukiwanie ciągów
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ów | Tablica 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 wykonywania | Rozmiar 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 ++
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_stDołą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 << endlWynik:
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 4294967295Pierwsze 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 javaNpos 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) { coutfun_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 4W 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.