Ciągi C++ to sekwencje znaków przechowywane w tablicy char. Ciągi służą do przechowywania słów i tekstu. Służą również do przechowywania danych, takich jak liczby i inne rodzaje informacji. Ciągi w C++ można zdefiniować za pomocą metody klasa std::string albo Tablice znaków w stylu C.

1. Struny w stylu C
Ciągi te są przechowywane jako zwykła, stara tablica znaków zakończona znakiem a znak zerowy „ ” . Są to typy ciągów, które C++ odziedziczył po języku C.
Składnia:
char str[] = 'techcodeview.com';>
Przykład:
C++
// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }> |
>
>Wyjście
techcodeview.com>
2. Klasa std::string
Są to nowe typy ciągów, które zostały wprowadzone w C++ jako klasa std::string zdefiniowana w pliku nagłówkowym. Zapewnia to wiele korzyści w porównaniu z konwencjonalnymi ciągami w stylu C, takimi jak dynamiczny rozmiar, funkcje składowe itp.
Składnia:
std::string str('techcodeview.com');> Przykład:
C++
// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }> |
>
>Wyjście
techcodeview.com>
Jeszcze jeden sposób na utworzenie ciągów znaków zawierających ten sam znak, który będzie się powtarzał.
Składnia:
std::string str(number,character);>
Przykład:
C++
#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }> |
>
>
Wyjście:
ggggg>
Sposoby definiowania ciągu w C++
W C++ ciągi znaków można definiować na kilka sposobów. Dostęp do ciągów można uzyskać z biblioteki standardowej za pomocą klasy string. Tablice znaków można również wykorzystać do zdefiniowania ciągów znaków. String zapewnia bogaty zestaw funkcji, takich jak wyszukiwanie i manipulowanie, które są powszechnie używanymi metodami. Pomimo tego, że jest mniej zaawansowana niż klasa string, metoda ta jest nadal szeroko stosowana, ponieważ jest wydajniejsza i łatwiejsza w użyciu. Sposoby definiowania ciągu w C++ to:
- Używanie słowa kluczowego String
- Używanie ciągów w stylu C
1. Używanie słowa kluczowego w postaci ciągu
Wygodniej jest zdefiniować ciąg za pomocą słowa kluczowego string zamiast słowa kluczowego array, ponieważ jest łatwy do napisania i zrozumienia.
Składnia:
string s = 'techcodeview.com'; string s('techcodeview.com');> Przykład:
C++
// C++ Program to demonstrate use of string keyword> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >string str(>'techcodeview.com'>);> >cout <<>'s = '> << s << endl;> >cout <<>'str = '> << str << endl;> >return> 0;> }> |
>
>Wyjście
s = techcodeview.com str = techcodeview.com>
2. Używanie ciągów w stylu C
Używanie funkcji bibliotek ciągów w stylu C, takich jak strcpy(), strcmp() i strcat() do definiowania ciągów. Ta metoda jest bardziej złożona i nie tak powszechnie stosowana jak pozostałe dwie, ale może być przydatna w przypadku starszego kodu lub gdy wymagana jest wydajność.
char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';> Przykład:
C++
// C++ Program to demonstrate C-style string declaration> #include> using> namespace> std;> int> main()> {> >char> s1[] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s2[4] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s3[4] =>'gfg'>;> >char> s4[] =>'gfg'>;> >cout <<>'s1 = '> << s1 << endl;> >cout <<>'s2 = '> << s2 << endl;> >cout <<>'s3 = '> << s3 << endl;> >cout <<>'s4 = '> << s4 << endl;> >return> 0;> }> |
>
>Wyjście
s1 = gfg s2 = gfg s3 = gfg s4 = gfg>
Inny przykład ciągu w stylu C:
C++
#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }> |
>
>Wyjście
Your string is= Geeeks for Geeks>
Jak pobierać dane wejściowe w języku C++
Wprowadzanie ciągu oznacza przyjęcie ciągu znaków od użytkownika. W C++. Mamy różne typy pobierania danych wejściowych od użytkownika, które zależą od ciągu znaków. Najczęstszym sposobem jest pobieranie danych wejściowych za pomocą jedzenie słowo kluczowe z operatorem ekstrakcji (>>) w C++. Metody przyjmowania ciągu znaków jako danych wejściowych to:
- jedzenie
- getline
- strumień ciągów
1. Korzystanie z Cin
Najprostszym sposobem wprowadzenia ciągu znaków jest użycie metody jedzenie polecenie wraz z operatorem wyodrębniania strumienia (>>).
Składnia:
cin>>s;>
Przykład:
C++
drzewo wyszukiwania binarnego]
// C++ Program to demonstrate string input using cin> #include> using> namespace> std;> int> main() {> >string s;> > >cout<<>'Enter String'>< cin>>s; cout<<'String is: '< return 0; }> |
>
>Wyjście
Enter String String is:>
Wyjście:
Enter String techcodeview.com String is: techcodeview.com>
2. Korzystanie z getline
The funkcja getline() w C++ służy do odczytania ciągu ze strumienia wejściowego. Jest zadeklarowana w pliku nagłówkowym.
Składnia:
getline(cin,s);>
Przykład:
C++
// C++ Program to demonstrate use of getline function> #include> using> namespace> std;> int> main()> {> >string s;> >cout <<>'Enter String'> << endl;> >getline(cin, s);> >cout <<>'String is: '> << s << endl;> >return> 0;> }> |
>
>
romWyjście
Enter String String is:>
Wyjście:
Enter String techcodeview.com String is: techcodeview.com>
3. Korzystanie ze strumienia stringów
The klasa stringstream w C++ służy do jednoczesnego pobierania wielu ciągów znaków jako danych wejściowych.
Składnia:
stringstream stringstream_object(string_name);>
Przykład:
C++
// C++ Program to demonstrate use of stringstream object> #include> #include> #include> using> namespace> std;> int> main()> {> >string s =>' techcodeview.com to the Moon '>;> >stringstream obj(s);> >// string to store words individually> >string temp;> >//>> operator odczyta z obiektu stringstream> >while> (obj>> temp) {> >cout << temp << endl;> >}> >return> 0;> }> |
>
>Wyjście
techcodeview.com to the Moon>
Jak przekazywać ciągi do funkcji?
W ten sam sposób, w jaki przekazujemy tablicę do funkcji, ciągi znaków w C++ można przekazywać do funkcji jako tablice znakowe. Oto przykładowy program:
Przykład:
C++
// C++ Program to print string using function> #include> using> namespace> std;> void> print_string(string s)> {> >cout <<>'Passed String is: '> << s << endl;> >return>;> }> int> main()> {> >string s =>'techcodeview.com'>;> >print_string(s);> >return> 0;> }> |
>
>Wyjście
Passed String is: techcodeview.com>
Wskaźniki i ciągi znaków
Wskaźniki w C++ są symboliczną reprezentacją adresów. Umożliwiają programom symulację call-by-reference, a także tworzenie i manipulowanie dynamicznymi strukturami danych. Za pomocą wskaźników możemy uzyskać pierwszy znak ciągu, który jest adresem początkowym ciągu. Jak pokazano poniżej, dostęp do danego ciągu można uzyskać i wydrukować za pomocą wskaźników.
Przykład:
C++
// C++ Program to print string using pointers> #include> using> namespace> std;> int> main()> {> >string s =>'Geeksforgeeks'>;> >// pointer variable declared to store the starting> >// address of the string> >char>* p = &s[0];> >// this loop will execute and print the character till> >// the character value is null this loop will execute and> >// print the characters> >while> (*p !=>' '>) {> >cout << *p;> >p++;> >}> >cout << endl;> >return> 0;> }> |
>
>Wyjście
Geeksforgeeks>
Różnica między tablicą String i Character w C++
Główna różnica między ciągiem znaków a tablicą znaków polega na tym, że ciągi znaków są niezmienne, podczas gdy tablice znaków nie.
| Strunowy | Tablica znaków |
|---|---|
| Ciągi definiują obiekty, które można reprezentować jako strumienie ciągów. | Znak null kończy tablicę znaków. |
| W ciągach nie następuje rozpad tablicy, ponieważ ciągi są reprezentowane jako obiekty. | Zagrożenie rozpad tablicy występuje w przypadku tablicy znaków |
| Klasa string udostępnia wiele funkcji umożliwiających manipulowanie ciągami. | Tablice znaków nie oferują wbudowanych funkcji do manipulowania ciągami znaków. |
| Pamięć przydzielana jest dynamicznie. | Rozmiar tablicy znaków musi być przydzielany statycznie. |
Dowiedz się więcej o różnica między ciągami znaków i tablicami znaków w C++
Funkcje łańcuchowe C++
C++ udostępnia pewne wbudowane funkcje służące do manipulowania ciągami znaków, takie jak funkcje strcpy() i strcat() służące do kopiowania i łączenia ciągów. Niektórzy z nich są:
| Funkcjonować | Opis |
|---|---|
| długość() | Ta funkcja zwraca długość ciągu. |
| zamieniać() | Ta funkcja służy do zamiany wartości 2 ciągów znaków. |
| rozmiar() | Służy do znajdowania rozmiaru łańcucha |
| Zmień rozmiar() | Funkcja ta służy do zmiany długości ciągu znaków do podanej liczby znaków. |
| znajdować() | Służy do wyszukiwania ciągu znaków przekazywanego w parametrach |
| push_back() | Ta funkcja służy do umieszczania przekazanego znaku na końcu łańcucha |
| pop_back() | Ta funkcja służy do usuwania ostatniego znaku z ciągu |
| jasne() | Ta funkcja służy do usuwania wszystkich elementów ciągu. |
| strncmp() | Ta funkcja porównuje co najwyżej pierwszą liczbę bajtów obu przekazanych ciągów. |
| strncpy() | Ta funkcja jest podobna do funkcji strcpy(), z tą różnicą, że kopiowanych jest maksymalnie n bajtów src |
| strchr() | Ta funkcja lokalizuje ostatnie wystąpienie znaku w ciągu. |
| pęknięty() | Ta funkcja dołącza kopię ciągu źródłowego na końcu ciągu docelowego |
| znajdować() | Ta funkcja służy do wyszukiwania określonego podciągu w ciągu znaków i zwraca położenie pierwszego znaku podciągu. |
| zastępować() | Funkcja ta służy do zastąpienia każdego elementu zakresu [pierwszy, ostatni), który jest równy starej wartości, nową wartością. |
| substr() | Funkcja ta służy do utworzenia podciągu z danego ciągu. |
| porównywać() | Ta funkcja służy do porównania dwóch ciągów znaków i zwraca wynik w postaci liczby całkowitej. |
| usuwać() | Ta funkcja służy do usunięcia określonej części ciągu znaków. |
Funkcje iteratora ciągów C++
W C++ wbudowane funkcje iteratora ciągów zapewniają programiście łatwy sposób modyfikowania i przeglądania elementów ciągu. Te funkcje to:
| Funkcje | Opis |
|---|---|
| zaczynać() | Ta funkcja zwraca iterator wskazujący początek ciągu. |
| koniec() | Ta funkcja zwraca iterator wskazujący koniec ciągu. |
| rznajdź() | Ta funkcja służy do znalezienia ostatniego wystąpienia ciągu. |
| rzacznij() | Ta funkcja zwraca iterator odwrotny wskazujący na koniec ciągu. |
| renderowanie() | Ta funkcja zwraca iterator odwrotny wskazujący początek ciągu. |
| cbegin() | Ta funkcja zwraca const_iterator wskazujący początek ciągu. |
| kilka() | Ta funkcja zwraca const_iterator wskazujący koniec ciągu. |
| crbegin() | Ta funkcja zwraca const_reverse_iterator wskazujący koniec ciągu. |
| wiara() | Ta funkcja zwraca const_reverse_iterator wskazujący początek ciągu. |
Przykład:
C++
// C++ Program to demonstrate string iterator functions> #include> using> namespace> std;> int> main()> {> >// declaring an iterator> >string::iterator itr;> >// declaring a reverse iterator> >string::reverse_iterator rit;> >string s =>'techcodeview.com'>;> >itr = s.begin();> > >cout <<>'Pointing to the start of the string: '> << *itr<< endl;> >itr = s.end() - 1;> >cout <<>'Pointing to the end of the string: '> << *itr << endl;> >rit = s.rbegin();> >cout <<>'Pointing to the last character of the string: '> << *rit << endl;> >rit = s.rend() - 1;> >cout <<>'Pointing to the first character of the string: '> << *rit << endl;> >return> 0;> }> |
>
>Wyjście
Pointing to the start of the string: G Pointing to the end of the string: s Pointing to the last character of the string: s Pointing to the first character of the string: G>
Funkcje pojemności ciągów
W języku C++ funkcje dotyczące pojemności łańcucha służą do zarządzania rozmiarem i pojemnością łańcucha. Podstawowe funkcje pojemności obejmują:
| Funkcjonować | Opis |
|---|---|
| długość() | Ta funkcja służy do zwracania rozmiaru łańcucha |
| pojemność() | Ta funkcja zwraca pojemność przydzieloną łańcuchowi przez kompilator |
| Zmień rozmiar() | Ta funkcja pozwala nam zwiększyć lub zmniejszyć rozmiar łańcucha |
| zmniejszyć_do_dopasowania() | Funkcja ta zmniejsza pojemność i zrównuje ją z wartością minimalną. |
Przykład:
C++
#include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> > >// length function is used to print the length of the string> >cout <<>'The length of the string is '> << s.length() << endl;> > >// capacity function is used to print the capacity of the string> >cout <<>'The capacity of string is '> << s.capacity()<< endl;> > >// the string.resize() function is used to resize the string to 10 characters> >s.resize(10);> > >cout <<>'The string after using resize function is '> << s << endl;> > >s.resize(20);> > >cout <<>'The capacity of string before using shrink_to_fit function is '><< s.capacity() << endl;> > >// shrink to fit function is used to reduce the capacity of the container> >s.shrink_to_fit();> >cout <<>'The capacity of string after using shrink_to_fit function is '><< s.capacity() << endl;> >return> 0;> }> |
>
>Wyjście
The length of the string is 13 The capacity of string is 15 The string after using resize function is GeeksforGe The capacity of string before using shrink_to_fit function is 30 The capacity of string...>
Podsumowując, w tym artykule wyjaśniono, w jaki sposób można definiować ciągi znaków w C++ przy użyciu tablic znaków i klas ciągów. Klasa string zapewnia bardziej zaawansowane funkcje, natomiast tablica znaków zapewnia podstawowe funkcje, ale jest wydajna i łatwa w użyciu. W tym artykule omówiliśmy także różne metody zbierania informacji od użytkownika.
Aby dowiedzieć się więcej o klasie std::string, zapoznaj się z artykułem – klasa std::string w C++