logo

Funkcje łańcuchowe w C++

Ciąg znaków nazywany jest tablicą znaków. W C++ strumień/sekwencja znaków jest przechowywany w tablicy char. C++ zawiera klasę std::string, która służy do reprezentowania ciągów. Jest to jeden z najbardziej podstawowych typów danych w C++ i zawiera ogromny zestaw wbudowanych funkcji. W tym artykule przyjrzymy się funkcjom obliczeń ciągów.

Co to jest std::string?

Std::string jest klasą w C++ od C++ 98. Ta klasa jest standardową reprezentacją ciągu tekstowego. Zawiera kilka typowych operacji na ciągach znaków, takich jak wyszukiwanie, zamiana, łączenie, porównywanie itp. Jest obecny w plik nagłówkowy.

Deklaracja i inicjalizacja ciągu

std::string company = 'techcodeview.com!';>

Często używane funkcje łańcuchowe w C++

Klasa std::string zawiera funkcje umożliwiające wykonywanie typowych operacji na ciągach znaków. Poniższa tabela zawiera niektóre z najczęściej używanych funkcji w C++:



Tak nie.

Kategoria

Funkcje i operatory

Funkcjonalność

1.

nie ma wartości null w js
Długość łańcucha

długość() lub rozmiar()

Zwróci długość ciągu.

2.

Dostęp do postaci

Indeksowanie (przy użyciu tablicy[indeks])

Aby uzyskać dostęp do poszczególnych znaków za pomocą indeksowania tablicy.

Na()

Służy do uzyskiwania dostępu do znaku o określonym indeksie.

3.

Dołączanie i łączenie ciągów

+Operator

+ operator służy do łączenia dwóch ciągów znaków.

dodać()

Funkcja append() dodaje jeden ciąg na końcu innego.

4.

Porównanie ciągów

== Operator

Ciągi można porównywać za pomocą operatora ==.

porównywać()

Funkcja Compare() zwraca wartość całkowitą wskazującą wynik porównania.

5.

Podciągi

substr()

Użyj funkcji substr(), aby wyodrębnić podciąg z ciągu.

6.

Badawczy

znajdować()

Funkcja find() zwraca pozycję pierwszego wystąpienia podciągu.

7.

Modyfikowanie ciągów

zastępować()

Użyj funkcji zamiany(), aby zmodyfikować część ciągu.

wstawić()

Funkcja wstaw() dodaje podciąg w określonej pozycji.

usuwać()

Użyj funkcji erase(), aby usunąć część ciągu.

8.

Konwersja

c_str()

Aby uzyskać ciąg znaków w stylu C ze std::string, możesz użyć funkcji c_str().

Notatka: Powyższe funkcje działają tylko dla ciągów w stylu C++ (obiekty std::string), a nie dla ciągów w stylu C (tablica znaków).

1. Długość ciągu – długość() lub rozmiar()

Możemy znaleźć długość ciągu (liczbę znaków) za pomocą dowolnego z nich długość() lub rozmiar() funkcja klasy std::string.

Składnia

string_object. size() or string_object. length()>

Parametry

  • Funkcja ta nie przyjmuje żadnego parametru.

Wartość zwracana

  • Ta funkcja zwraca liczbę znaków w obiekcie string.

Przykład

std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>

Zwróci długość ciągu tekst czyli 13.

2. Dostęp do znaków – at()

Ogólnie rzecz biorąc, możemy uzyskać dostęp do znaku ciągu za pomocą [] operator indeksu dolnego tablicy i indeksowanie. Ale std::string ma również funkcję o nazwie Na() za pomocą którego można uzyskać dostęp do znaków ciągu.

Składnia

string_object. at( index );>

Parametry

    indeks: reprezentuje pozycję znaku w ciągu.

Wartość zwracana

  • Ta funkcja zwraca znak obecny w indeks.

Przykład

std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>

Std::cout wypisze K na konsoli, ponieważ jest to znak obecny w indeksie 3.

3. Łączenie ciągów – operator append() lub +

Możemy łączyć ciągi znaków w C++ za pomocą dwóch metod:

1. + Operator

Operator + jest przeciążony w klasie std::string w celu wykonania łączenia ciągów.

Składnia

string_object1 + string_object2>

Przykład

std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>

+ operator służy do łączenia dwóch ciągów znaków. Ciąg fullName będzie miał postać techcodeview.com.

2. dołącz()

Funkcja append() to kolejna funkcja składowa służąca do łączenia dwóch ciągów znaków.

Składnia

string_object1. append ( string2 )>

Parametry

    ciąg2: Ta funkcja pobiera ciąg znaków, który ma zostać dołączony jako parametr. Może to być ciąg znaków w stylu C lub C++.

Wartość zwracana

  • Odniesienie do końcowego ciągu.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string>

Funkcja append() dodaje jeden ciąg na końcu innego.

4. Porównanie ciągów – operator Compare() lub ==

Podobnie jak w przypadku konkatenacji, porównanie ciągów możemy wykonać dwiema metodami:

1. == Operator

Do porównania dwóch ciągów można użyć operatora równości, ponieważ jest on przeciążony dla tej operacji w klasie std::string.

Składnia

string_object1 == string_object2>

To powróci PRAWDA jeśli oba ciągi są równe, w przeciwnym razie zwraca FAŁSZ.

Przykład

std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }>

Tutaj zostaną wydrukowane ciągi znaków nierówne, ponieważ operator == zwróci FAŁSZ.

2. porównaj()

Funkcja Compare() jest funkcją członkowską klasy std::string, której można użyć do porównania dwóch ciągów znaków.

Składnia

str1. compare( str2 );>

Parametry

    str2: To jest ciąg do porównania. Może to być ciąg znaków w stylu C lub C++.

Wartość zwracana

  • Jeśli ciągi są równe, wróć zero.
  • Jeśli str1 jest większy niż str2, zwróć wartość >0
  • Jeśli str2 jest większe niż str1, zwróć wartość <0

Przykład

string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>

Wynik będzie zawierał wartość mniejszą od zera, ponieważ str2 jest większe niż str1.

Możemy również porównać podciąg str2 za pomocą funkcji porównania ():

str1.compare(position, length, str2);>

Gdzie,

    pozycja : pozycja pierwszego podciągu znaków. długość: długość podciągu. str2: Obiekt ciągu do porównania.

5. Wyszukiwanie – znajdź()

Możemy skorzystać z znajdować() funkcja klasy std::string sprawdzająca, czy dany znak lub podciąg występuje w ciągu znaków lub jego części.

Składnia find()

str1.find(var);>

Parametry

    var: Może to być ciąg w stylu C, ciąg w stylu C++ lub znak, który ma być wyszukiwany w ciągu.

Wartość zwracana

  • Zwraca wskaźnik do pierwszego wystąpienia znaku lub podciągu w ciągu.

Przykład

std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring>

Zmienna pozycji będzie zawierać liczbę 4, która jest początkiem pierwszego wystąpienia ciągu Programowanie w tekście ciągu.

6. Wygeneruj podciąg – substr()

Możemy skorzystać z funkcja substr(). aby wygenerować część ciągu jako nowy obiekt ciągu. Jest to funkcja członkowska klasy std::string.

Składnia substr() w C

str1. substr ( start, end );>

Parametry

    start: Pozycja początkowa podciągu, który ma zostać wygenerowany. end: Koniec generowanego podciągu.

Typ zwrotu

  • Zwraca nowo utworzony obiekt string.

Przykład

std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>

W powyższym przykładzie. the pod string będzie zawierał świat.

Modyfikowanie ciągów

Poniższa funkcja pozwala nam modyfikować bieżący ciąg znaków.

1. wstaw()

Funkcja wstaw() nie tylko pozwala nam dodać ciąg, ale także pozwala nam dodać go w określonej pozycji. Jest to także funkcja członkowska klasy std::string.

Składnia

str1. insert (index, str2);>

Parametry

    str2: ciąg do wstawienia. indeks: pozycja, w której należy wstawić nowy ciąg

Typ zwrotu

wyrównaj obraz CSS
  • Odniesienie do str1.

Przykład

std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>

2. zamień()

Funkcja zamiany() zastępuje część ciągu podanym innym ciągiem. W przeciwieństwie do wstawiania, znaki w części, w której ma zostać wstawiony nowy ciąg znaków, są usuwane.

Składnia

str1. replace ( index, size, str2 );>

Parametry

    indeks: Indeks miejsca, w którym należy rozpocząć zastępowanie nowego ciągu. size: długość części ciągu, która ma zostać zastąpiona. str2: nowy ciąg znaków, który ma zostać wstawiony.

Typ zwrotu

  • Odniesienie do str1.

Przykład

std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>

3. usuń()

Funkcja erase() jest funkcją składową klasy std::string, która służy do usuwania znaku lub części ciągu.

Składnia

str1 .erase( start, end);>

Parametry

    start: Pozycja wyjściowa. koniec: Pozycja końcowa.

Typ zwrotu

  • Odniesienie do str1.

Przykład

std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>

Konwertuj std::string na ciąg C – c_str)_

Funkcja c_str() jest funkcją składową używaną do konwersji ciągu znaków w stylu C++, tj. obiektów std::string, na ciąg w stylu C, tj. tablicę znaków.

Składnia

str1.c_str()>

Parametry

  • Funkcja ta nie przyjmuje żadnego parametru.

Wartość zwracana

  • Wskaźnik do równoważnej tablicy znaków.

Przykład

std::string str = 'C++'; const char* cstr = str.c_str()>

Przykład funkcji łańcuchowych w C++

Poniższy kod demonstruje użycie wyżej określonych funkcji łańcuchowych:

C++




// C++ Code to demostrate various functions available in> // String class> > #include> #include> > using> namespace> std;> > int> main()> {> >// Creating and initializing strings> >string greeting =>'Hello, World!'>;> >cout << greeting << endl;> >string name;> > >// Input from the user> >cout <<>'Enter your name: '>;> >cin>> imię;> >cout << name << endl;> > >// String length> >int> length = greeting.length();> >cout << length << endl;> > >// Accessing characters> >char> firstChar = greeting[0];> >char> secondChar = greeting.at(1);> >cout << firstChar <<>' '> << secondChar << endl;> > >// Appending and concatenating strings> >string firstName =>'Geek'>;> >string lastName =>'Geeks'>;> >string fullName = firstName +>' '> + lastName;> >cout << fullName << endl;> >string base =>'Hello'>;> >cout << base << endl;> >base.append(>' World!'>);> >cout << base << endl;> > >// String comparison> >string str1 =>'apple'>;> >string str2 =>'banana'>;> >if> (str1 == str2) {> >cout <<>'Strings are equal'> << endl;> >}> >else> {> >cout <<>'Strings are not equal'> << endl;> >}> > >int> result = str1.compare(str2);> >if> (result == 0) {> >cout <<>'Strings are equal'> << endl;> >}> >else> if> (result <0) {> >cout <<>'str1 comes before str2'> << endl;> >}> >else> {> >cout <<>'str1 comes after str2'> << endl;> >}> > >// Substrings> >string text =>'Hello, World!'>;> >cout << text << endl;> >string sub = text.substr(7, 5);> >cout << sub << endl;> > >// Searching> >string searchIn =>'C++ Programming'>;> >size_t> position = searchIn.find(>'Programming'>);> >if> (position != string::npos) {> >cout <<>'Found at position '> << position << endl;> >}> >else> {> >cout <<>'Not found'> << endl;> >}> > >// Modifying strings> >string modify =>'I like dogs.'>;> >modify.replace(7, 4,>'cats'>);> >cout << modify << endl;> >modify.insert(6,>' black'>);> >cout << modify << endl;> >modify.erase(6, 6);> >cout << modify << endl;> > >// Conversion> >string str =>'C++'>;> >const> char>* cstr = str.c_str();> >cout << cstr << endl;> > >return> 0;> }>

>

>

Wyjście

Hello, World! Enter your name: Geeks Geeks 13 H e Geek Geeks Hello Hello World! Strings are not equal str1 comes before str2 Hello, World! World Found at position 4 I like cats. I like black cats. I like cats. C++>