Řetězce C++ jsou sekvence znaků uložené v poli znaků. Řetězce se používají k ukládání slov a textu. Používají se také k ukládání dat, jako jsou čísla a další typy informací. Řetězce v C++ lze definovat buď pomocí std::string třída nebo Pole znaků ve stylu C.

1. Řetězce ve stylu C
Tyto řetězce jsou uloženy jako obyčejné staré pole znaků zakončené a prázdný znak „ “ . Jsou to typy řetězců, které C++ zdědilo z jazyka C.
Syntax:
char str[] = 'techcodeview.com';>
Příklad:
C++
// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }> |
>
>Výstup
techcodeview.com>
2. std::string Třída
Toto jsou nové typy řetězců, které jsou v C++ zavedeny jako třída std::string definovaná v záhlaví souboru. To poskytuje mnoho výhod oproti konvenčním řetězcům ve stylu C, jako je dynamická velikost, členské funkce atd.
Syntax:
std::string str('techcodeview.com');> Příklad:
C++
// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }> |
>
>Výstup
techcodeview.com>
Ještě jeden způsob, jak můžeme vytvořit řetězce, které mají stejný znak opakující se znovu a znovu.
Syntax:
std::string str(number,character);>
Příklad:
C++
#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }> |
>
>
Výstup:
ggggg>
Způsoby, jak definovat řetězec v C++
Řetězce lze v C++ definovat několika způsoby. K řetězcům lze přistupovat ze standardní knihovny pomocí třídy string. Pole znaků lze také použít k definování řetězců. Řetězec poskytuje bohatou sadu funkcí, jako je vyhledávání a manipulace, což jsou běžně používané metody. Navzdory tomu, že je méně pokročilá než třída string, je tato metoda stále široce používána, protože je efektivnější a snadněji použitelná. Způsoby, jak definovat řetězec v C++, jsou:
- Použití klíčového slova String
- Použití strun ve stylu C
1. Použití řetězce Klíčové slovo
Je vhodnější definovat řetězec pomocí klíčového slova string namísto použití klíčového slova pole, protože se snadno píše a rozumí.
Syntax:
string s = 'techcodeview.com'; string s('techcodeview.com');> Příklad:
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;> }> |
>
>Výstup
s = techcodeview.com str = techcodeview.com>
2. Použití strun ve stylu C
Použití funkcí knihoven řetězců ve stylu C, jako je strcpy(), strcmp() a strcat() k definování řetězců. Tato metoda je složitější a není tak široce používaná jako ostatní dvě, ale může být užitečná při práci se starším kódem nebo když potřebujete výkon.
char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';> Příklad:
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;> }> |
>
>Výstup
s1 = gfg s2 = gfg s3 = gfg s4 = gfg>
Další příklad řetězce ve stylu C:
C++
#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }> |
>
>Výstup
Your string is= Geeeks for Geeks>
Jak převzít vstup řetězce v C++
Vstup řetězce znamená přijetí řetězce od uživatele. V C++. Máme různé typy přijímání vstupu od uživatele, které závisí na řetězci. Nejběžnějším způsobem je převzít vstup pomocí jíst klíčové slovo s operátorem extrakce (>>) v C++. Metody, jak vzít řetězec jako vstup, jsou:
- jíst
- getline
- stringstream
1. Použití Cin
Nejjednodušší způsob, jak převzít vstup řetězce, je použít jíst příkaz spolu s operátorem extrakce proudu (>>).
Syntax:
cin>>s;>
Příklad:
C++
herec chiranjeevi
// 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; }> |
>
>Výstup
Enter String String is:>
Výstup:
Enter String techcodeview.com String is: techcodeview.com>
2. Pomocí getline
The funkce getline() v C++ se používá ke čtení řetězce ze vstupního proudu. Je deklarován v hlavičkovém souboru.
Syntax:
getline(cin,s);>
Příklad:
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;> }> |
>
>Výstup
Enter String String is:>
Výstup:
Enter String techcodeview.com String is: techcodeview.com>
3. Použití stringstream
The třída stringstream v C++ se používá k převzetí více řetězců jako vstupu najednou.
Syntax:
stringstream stringstream_object(string_name);>
Příklad:
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;> >//>> operátor bude číst z objektu stringstream> >while> (obj>> teplota) {> >cout << temp << endl;> >}> >return> 0;> }> |
>
>Výstup
techcodeview.com to the Moon>
Jak předávat řetězce funkcím?
Stejným způsobem, jakým předáváme pole funkci, lze řetězce v C++ předávat funkcím jako pole znaků. Zde je příklad programu:
Příklad:
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;> }> |
>
>Výstup
Passed String is: techcodeview.com>
Ukazatele a řetězce
Ukazatele v C++ jsou symbolické reprezentace adres. Umožňují programům simulovat volání po referenci a také vytvářet a manipulovat s dynamickými datovými strukturami. Pomocí ukazatelů můžeme získat první znak řetězce, což je počáteční adresa řetězce. Jak je znázorněno níže, daný řetězec lze otevřít a vytisknout pomocí ukazatelů.
Příklad:
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;> }> |
>
>Výstup
Geeksforgeeks>
Rozdíl mezi řetězcovým a znakovým polem v C++
Hlavní rozdíl mezi řetězcem a polem znaků je v tom, že řetězce jsou neměnné, zatímco pole znaků nikoli.
| Tětiva | Pole znaků |
|---|---|
| Řetězce definují objekty, které mohou být reprezentovány jako řetězcové proudy. | Znak null ukončuje pole znaků. |
| V řetězcích nedochází k žádnému rozpadu pole, protože řetězce jsou reprezentovány jako objekty. | Hrozba rozpad pole je přítomen v případě pole znaků |
| Třída string poskytuje řadu funkcí pro manipulaci s řetězci. | Pole znaků nenabízejí vestavěné funkce pro manipulaci s řetězci. |
| Paměť je alokována dynamicky. | Velikost pole znaků musí být přidělena staticky. |
Zjistěte více o rozdíl mezi řetězci a poli znaků v C++
jak velký mám monitor
Řetězcové funkce C++
C++ poskytuje některé vestavěné funkce, které se používají pro manipulaci s řetězci, jako jsou funkce strcpy() a strcat() pro kopírování a zřetězení řetězců. Někteří z nich jsou:
| Funkce | Popis |
|---|---|
| délka() | Tato funkce vrací délku řetězce. |
| swap() | Tato funkce se používá k záměně hodnot 2 řetězců. |
| velikost() | Používá se pro zjištění velikosti řetězce |
| změnit velikost () | Tato funkce slouží ke změně velikosti délky řetězce až na daný počet znaků. |
| nalézt() | Používá se k nalezení řetězce, který je předán v parametrech |
| zatlačit zpátky() | Tato funkce se používá k vložení předávaného znaku na konec řetězce |
| pop_back() | Tato funkce se používá k odstranění posledního znaku z řetězce |
| Průhledná() | Tato funkce se používá k odstranění všech prvků řetězce. |
| strncmp() | Tato funkce porovnává maximálně první počet bajtů obou předávaných řetězců. |
| strncpy() | Tato funkce je podobná funkci strcpy() s tím rozdílem, že se zkopíruje maximálně n bajtů src |
| strrchr() | Tato funkce vyhledá poslední výskyt znaku v řetězci. |
| prasklý() | Tato funkce připojí kopii zdrojového řetězce na konec cílového řetězce |
| nalézt() | Tato funkce se používá k vyhledání určitého podřetězce uvnitř řetězce a vrací pozici prvního znaku podřetězce. |
| nahradit() | Tato funkce se používá k nahrazení každého prvku v rozsahu [první, poslední), který se rovná staré hodnotě, novou hodnotou. |
| substr() | Tato funkce se používá k vytvoření podřetězce z daného řetězce. |
| porovnat() | Tato funkce se používá k porovnání dvou řetězců a vrací výsledek ve formě celého čísla. |
| vymazat() | Tato funkce se používá k odstranění určité části řetězce. |
Funkce iterátoru řetězců C++
V C++ vestavěné funkce iterátoru řetězců poskytují programátorovi snadný způsob úpravy a procházení prvků řetězce. Tyto funkce jsou:
| Funkce | Popis |
|---|---|
| začít() | Tato funkce vrací iterátor ukazující na začátek řetězce. |
| konec() | Tato funkce vrací iterátor, který ukazuje na konec řetězce. |
| rfind() | Tato funkce se používá k nalezení posledního výskytu řetězce. |
| rbegin() | Tato funkce vrací zpětný iterátor ukazující na konec řetězce. |
| poskytnout() | Tato funkce vrací zpětný iterátor ukazující na začátek řetězce. |
| cbegin() | Tato funkce vrací const_iterator ukazující na začátek řetězce. |
| trochu() | Tato funkce vrací const_iterator ukazující na konec řetězce. |
| crbegin() | Tato funkce vrací const_reverse_iterator ukazující na konec řetězce. |
| Crend() | Tato funkce vrací const_reverse_iterator ukazující na začátek řetězce. |
Příklad:
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;> }> |
>
>Výstup
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>
Funkce kapacity řetězce
V C++ se funkce kapacity řetězce používají ke správě velikosti a kapacity řetězce. Mezi hlavní funkce kapacity patří:
| Funkce | Popis |
|---|---|
| délka() | Tato funkce se používá k vrácení velikosti řetězce |
| kapacita() | Tato funkce vrací kapacitu, která je řetězci přidělena kompilátorem |
| změnit velikost () | Tato funkce nám umožňuje zvětšit nebo zmenšit velikost řetězce |
| shrink_to_fit() | Tato funkce snižuje kapacitu a rovná ji minimu. |
Příklad:
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;> }> |
>
>Výstup
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...>
Na závěr tento článek vysvětluje, jak lze řetězce definovat v C++ pomocí znakových polí a řetězcových tříd. Třída string poskytuje pokročilejší funkce, zatímco pole znaků poskytuje základní funkce, ale je efektivní a snadno se používá. V tomto článku jsme také diskutovali o různých metodách, jak získat vstup od uživatele.
Další informace o třídě std::string naleznete v článku – std::string třídy v C++