logo

Řetězce v C++

Ř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.

Řetězce v 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++