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. |
| 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 ==. |
| Funkcja Compare() zwraca wartość całkowitą wskazującą wynik porównania. | |||
| 5. | Podciągi | Użyj funkcji substr(), aby wyodrębnić podciąg z ciągu. | |
| 6. | Badawczy | 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++>