C ++ Dołącz do łańcucha

C ++ Dołącz do łańcucha
Słowo „dołącz” oznacza dodanie czegoś z tyłu innej rzeczy. Ciąg można zadeklarować w C ++ na dwa główne sposoby. Deklarowanie łańcucha jako tablicy szyj. Innym sposobem jest instancja struktury danych obiektów o obiektach. Aby utworzyć instancję obiektu String z klasy ciągów, biblioteka ciągów C ++ musi być zawarta w programie.

Rozważ następujący ciąg docelowy:

„Taniec na Księżycu”

'!„Jako postać można dołączyć do łańcucha docelowego, aby stać się,

„Taniec na Księżycu!"

Surface „S -Surface”, można dołączyć do łańcucha docelowego, aby stać się,

„Taniec na powierzchni Księżyca”

Klasa ciągów C ++ ma funkcję członka, append (), do dołączenia. W rzeczywistości istnieje 9 wariantów tej funkcji członka w C ++ 20. Takie warianty funkcji są wywoływane przez funkcje przeciążone. 9 przeciążonych funkcji zostanie wyjaśnionych w tym artykule, poczynając od najprostszych. Funkcja C ++ String push_back () zostanie również wyjaśniona. Strings zadeklarowane jako tablica książek lub jako stałe wskaźniki do łańcuchów nie są brane pod uwagę do dołączania. Do dołączania rozważane są tylko struny utworzone z klasy ciągów.

Basic_String & append (const t & t)

Ta funkcja członka zwraca dołączony ciąg. Zakłada się jako argument, szereg książek. Poniższy kod to ilustruje:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
char cHs [] = „powierzchnia”;
String Result = Target.append (CHS);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

UWAGA: Zarówno oryginalne, jak i zwrócone są dołączane.

Basic_String & append (const wykres* s)

Ta funkcja członka jest bardzo podobna do powyższej funkcji. Zostanie stały wskaźnik jako argument i zwraca dołączony ciąg. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
const char* cpc = „” powierzchnia ”;
String Result = Target.append (CPC);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Basic_String & append (inicitizer_list)

Ta funkcja członka jest podobna do powyższego, ale bierze sam listę ciągów jako argument. Lista może być literacką w podwójnych cytatach lub sekwencją znaków, kończąc się znakiem NUL (\ 0) w aparat ortodontyczny. Funkcja zwraca dołączony ciąg. Poniższy program ilustruje to dla literatu smyczkowego w podwójnych cytatach:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String Result = Target.Dodatek („powierzchnia”);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Poniższy program ilustruje to dla łańcucha dołączającego, jako tablica znaków:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String Result = Target.append ('\' ',' s ', ",', 'u', 'r', 'f', 'a', ',', 'e', ​​'\ 0');
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

basic_string & append (const basic_string & str)

Ta funkcja członka jest podobna do powyższych, ale dołącza wszystkie listy innego obiektu warstwy utworzyć. Funkcja zwraca dołączony ciąg. Poniższy program ilustruje to (dla dwóch obiektów ciągów):

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String inniTr = String („Surface”);
String :: iterator it = innitr.zaczynać();
String Result = Target.Dodatek (innitr);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Basic_String & append (inputiterator pierwszy, Inputiterator Last)

Ta funkcja członka jest podobna do powyższego, ale w przypadku jego argumentów zajmuje zakres od innego instancji obiektu smyczkowego, w którym „pierwszy” jest iteratorem, który wskazuje na pierwszy element zakresu, a „Last” to kolejny iterator, który wskazuje tuż po ostatnim elemencie zakresu. Funkcja zwraca dołączony ciąg. Poniższy program ilustruje to dla dwóch obiektów ciągów:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String innitr = String („Powierzchnia Ziemi nie jest gładka”);
String :: iterator it = innitr.zaczynać();
String :: iterator fst = it + 9;
String :: Iterator lst = it + 19;
String Result = Target.append (FST, LST);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Zwróć uwagę, jak ustalono iteratory FST i LST.

Basic_String & append (const wykres* s, size_type n)

Ta funkcja członka jest podobna do powyższego, ale dołącza pierwsze n znaki sekwencji znaków, wskazane przez stał. Funkcja zwraca dołączony ciąg. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
const char* cpc = „” powierzchnia ”;
String Result = Target.append (CPC, 7);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na falach księżyca

Basic_String & append (const t & t, size_type POS, size_type n = npos)

Ta funkcja członka jest podobna do powyższego, ale dołącza n znaków sekwencji znaków wskazywanych na stałe wskaźnik do charakteru, zaczynając od indeksu, POS. Funkcja zwraca dołączony ciąg. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
const char* cpc = „” powierzchnia ”;
String Result = Target.append (CPC, 2, 5);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na mocy księżyca

Jeśli trzeci argument jest nieobecny, znaki są pobierane od POS do końca jego sznurka.

basic_string & append (const basic_string & str, size_type POS, size_type n = npos)

Ta funkcja członka jest podobna do powyższego, ale drugi ciąg jest instancjalnym obiektem ciągów, a nie wskaźnikiem stałego do charakteru. Funkcja zwraca dołączony ciąg. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String inniTr = „Surface”;
String Result = Target.append (innitr, 2, 5);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na mocy księżyca

Jeśli trzeci argument jest nieobecny, znaki są pobierane od POS do końca jego sznurka.

Basic_String & append (size_type n, wykres c)

Ta funkcja członka może dołączyć n liczbę tego samego znaku, c. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
char ch = '!';;
String Result = Target.Dodatek (3, CH);
Cout << result << endl;
powrót 0;

Wyjście to:

Taniec na księżycu!!!

void push_back (wykres c)

Funkcja push_back () zwraca void. Dołącza tylko jeden znak, c. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
char ch = '!';;
cel.push_back (ch);
Cout << target << endl;
powrót 0;

Wyjście to:

Taniec na księżycu!

Ponieważ nie zwracano żadnego nowego ciągu, pierwotny ciąg docelowy powinien zostać zmieniony.

Wkładanie

Klasa ciągów ma również funkcję członkowską, Insert (). Jest to również przeciążona funkcja różnych wariantów. Jednym z głównych argumentów funkcji wkładki jest iterator. Jeśli funkcja insert () zachowuje się jako funkcja append (), potrzebuje iteratora, który wskazuje tuż po ostatnim znaku ciągu. Wszystkie funkcje insert () zmieniają oryginalny cel i nie zwracaj dołączonego ciągu.

Poniższy program pokazuje, w jaki sposób pojedynczy znak jest dołączany do łańcucha docelowego za pomocą funkcji INSERT ():

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String :: Iterator it = cel.koniec();
cel.wstaw (it ”!');
Cout << target << endl;
powrót 0;

Wyjście to:

Taniec na księżycu!

Poniższy program pokazuje, w jaki sposób lista inicjalizacyjna jest dołączana do ciągu:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String :: Iterator it = cel.koniec();
cel.insert (it, '\' ',' s ', ",', ',' u ',', ',' f ',' a ',' c ',' e ',' \ 0 ') ;
Cout << target << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Zamiast używać iteratora, funkcja insert () może użyć liczby, która jest jedna większa niż maksymalny indeks. Ten numer może zostać uzyskany przez wyrażenie, Stringobj.rozmiar(). Poniższy kod to ilustruje:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String :: Iterator it = cel.koniec();
const char* cpc = „” powierzchnia ”;
cel.Wstaw (cel.size (), cpc);
Cout << target << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Poniższy program jest podobny do powyższego, ale drugi ciąg jest obiektem ciągu:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String Target = String („Dancing on the Moon”);
String :: Iterator it = cel.koniec();
String inniTr = String („Surface”);
cel.Wstaw (cel.size (), innitr);
Cout << target << endl;
powrót 0;

Wyjście to:

Taniec na powierzchni księżyca

Wniosek

Aby dołączyć do ciągu docelowego, użyj funkcji członka klasy String Class (). Istnieje dziewięć przeciążonych wariantów funkcji członka append () w c++. Aby dołączyć tylko jeden znak, można użyć funkcji członka push_back (). Do dołączania można również użyć funkcji elementu Insert (). W tym przypadku należy uzyskać dostęp do pozycji tuż po ostatnim znaku łańcucha.