logo

Řetězcové funkce v C++

Řetězec se označuje jako pole znaků. V C++ je proud/sekvence znaků uložena v poli znaků. C++ obsahuje třídu std::string, která se používá k reprezentaci řetězců. Je to jeden z nejzákladnějších datových typů v C++ a přichází s obrovskou sadou vestavěných funkcí. V tomto článku se podíváme na funkce řetězcových výpočtů.

Co je std::string?

std::string je třída v C++ od C++98. Tato třída je standardní reprezentací textového řetězce. Zahrnuje některé typické operace s řetězci, jako je najít, nahradit, zřetězit, porovnat atd. Je přítomen v hlavičkový soubor.



Deklarace a inicializace řetězce

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

Běžně používané funkce řetězce v C++

Třída std::string obsahuje funkce, které poskytují některé běžné operace s řetězci. Níže uvedená tabulka obsahuje některé z nejčastěji používaných funkcí v C++:

Ano ne.

Kategorie



Funkce a operátory

Funkčnost

1.



rudyard kipling if vysvětlení
Délka struny

délka() nebo velikost()

Vrátí délku řetězce.

2.

Přístup ke znakům

Indexování (pomocí pole[index])

Přístup k jednotlivým znakům pomocí indexování pole.

na()

Používá se pro přístup ke znaku na zadaném indexu.

3.

Připojování a zřetězení řetězců

+ Operátor

Operátor + se používá ke zřetězení dvou řetězců.

připojit()

Funkce append() přidá jeden řetězec na konec druhého.

4.

Porovnání řetězců

== Operátor

Řetězce můžete porovnávat pomocí operátoru ==.

porovnat()

Funkce Compare() vrací celočíselnou hodnotu označující výsledek porovnání.

5.

Podřetězce

substr()

Pomocí funkce substr() extrahujte podřetězec z řetězce.

6.

Hledání

nalézt()

Funkce find() vrací pozici prvního výskytu podřetězce.

7.

Úprava řetězců

nahradit()

K úpravě části řetězce použijte funkci replace().

vložit()

Funkce insert() přidá podřetězec na zadanou pozici.

vymazat()

Pomocí funkce erase() odstraňte část řetězce.

8.

Konverze

c_str()

Chcete-li získat řetězec ve stylu C z std::string, můžete použít funkci c_str().

Poznámka: Výše uvedené funkce fungují pouze pro řetězce stylu C++ (objekty std::string), nikoli pro řetězce stylu C (pole znaků).

1. Délka řetězce – length() nebo size()

Délku řetězce (počet znaků) zjistíme pomocí obou délka() nebo velikost() funkce třídy std::string.

Syntax

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

Parametry

  • Tato funkce nebere žádný parametr.

Návratová hodnota

  • Tato funkce vrací počet znaků v objektu string.

Příklad

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

Vrátí délku řetězce text což je 13.

2. Přístup ke znakům – at()

Obecně můžeme přistupovat k charakteru řetězce pomocí [] operátor dolního indexu pole a indexování. Ale std::string má také funkci pojmenovanou na() které lze použít pro přístup ke znakům řetězce.

Syntax

string_object. at( index );>

Parametry

    index: Představuje pozici znaku v řetězci.

Návratová hodnota

  • Tato funkce vrací znak přítomný v index.

Příklad

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

std::cout vytiskne K na konzole, protože je to znak přítomný na indexu 3.

3. Zřetězení řetězců – append() nebo + operátor

Řetězec v C++ můžeme zřetězit dvěma způsoby:

1. + Provozovatel

Operátor + je přetížen ve třídě std::string, aby mohl provést zřetězení řetězců.

Syntax

string_object1 + string_object2>

Příklad

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

Operátor + se používá ke zřetězení dvou řetězců. Řetězec fullName bude techcodeview.com.

2. append()

Funkce append() je další členská funkce pro zřetězení dvou řetězců.

Syntax

string_object1. append ( string2 )>

Parametry

    string2: Tato funkce bere řetězec, který má být připojen, jako parametr. Může to být řetězec stylu C nebo C++.

Návratová hodnota

  • Odkaz na poslední řetězec.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string>

Funkce append() přidá jeden řetězec na konec druhého.

4. Porovnání řetězců – porovnat() nebo operátor ==

Stejně jako zřetězení můžeme provést porovnání řetězců dvěma způsoby:

1. == Provozovatel

Operátor rovnosti lze použít k porovnání dvou řetězců, protože je pro tuto operaci ve třídě std::string přetížen.

Syntax

string_object1 == string_object2>

To se vrátí skutečný pokud jsou oba řetězce stejné, jinak vrací Nepravdivé.

Příklad

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

Zde bude vytištěno Řetězce nejsou stejné, protože se vrátí operátor == Nepravdivé.

2. porovnat()

Funkce Compare() je členská funkce třídy std::string, kterou lze použít k porovnání dvou řetězců.

Syntax

str1. compare( str2 );>

Parametry

    str2: Je to řetězec, který se má porovnávat. Může to být řetězec ve stylu C nebo C++.

Návratová hodnota

  • Pokud jsou řetězce stejné, vraťte se nula.
  • Pokud je str1 větší než str2, vrátí se hodnota >0
  • Pokud je str2 větší než str1, vrátí se hodnota <0

Příklad

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

Výsledek bude obsahovat hodnotu menší než nula, protože str2 je větší než str1.

Můžeme také porovnat podřetězec str2 pomocí funkce porovnání ():

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

kde,

    position : pozice prvního znakového podřetězce. délka: délka podřetězce. str2: Řetězcový objekt, který má být porovnán.

5. Hledání – find()

Můžeme použít nalézt() funkce třídy std::string pro kontrolu, zda je daný znak nebo podřetězec přítomen v řetězci nebo v části řetězce.

Syntaxe find()

str1.find(var);>

Parametry

    var: Může to být řetězec stylu C, řetězec stylu C++ nebo znak, který se má v řetězci hledat.

Návratová hodnota

  • Vrátí ukazatel na první výskyt znaku nebo podřetězce v řetězci.

Příklad

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

Proměnná pozice bude obsahovat 4, což je začátek prvního výskytu řetězce Programování v textovém řetězci.

6. Vygenerujte podřetězec – substr()

Můžeme použít funkce substr(). vygenerovat část řetězce jako nový objekt řetězce. Je to členská funkce třídy std::string.

Syntaxe substr() v C

str1. substr ( start, end );>

Parametry

    start: Počáteční pozice podřetězce, který má být generován. end: Konec podřetězce, který má být vygenerován.

Typ návratu

  • Vrátí nově vytvořený objekt typu řetězec.

Příklad

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

Ve výše uvedeném příkladu. a sub řetězec bude obsahovat svět.

Úprava řetězců

Následující funkce nám umožňuje upravit aktuální řetězec.

1. vložit()

Funkce insert() nám umožňuje nejen přidat řetězec, ale také nám jej umožňuje přidat na zadanou pozici. Je to také členská funkce třídy std::string.

Syntax

str1. insert (index, str2);>

Parametry

    str2: řetězec, který se má vložit. index: pozice, kam vložit nový řetězec

Typ návratu

  • Odkaz na str1.

Příklad

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

2. nahradit()

Funkce nahradit() nahradí část řetězce zadaným jiným řetězcem. Na rozdíl od insertu jsou odstraněny znaky v části, kam se má vložit nový řetězec.

Syntax

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

Parametry

    index: Index, kde začít nahrazovat nový řetězec. size: délka části řetězce, která má být nahrazena. str2: nový řetězec, který má být vložen.

Typ návratu

java objekt
  • Odkaz na str1.

Příklad

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

3. vymazat()

Funkce erase() je členská funkce třídy std::string, která se používá k odstranění znaku nebo části řetězce.

Syntax

str1 .erase( start, end);>

Parametry

    start: Výchozí pozice. konec: Koncová pozice.

Typ návratu

  • Odkaz na str1.

Příklad

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

Převést std::string na C řetězec – c_str)_

Funkce c_str() je členská funkce, která se používá k převodu řetězce stylu C++, tj. objektů std::string, na řetězec stylu C, tj. pole znaků.

Syntax

str1.c_str()>

Parametry

  • Tato funkce nebere žádný parametr.

Návratová hodnota

  • Ukazatel na ekvivalentní pole znaků.

Příklad

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

Příklad řetězcových funkcí v C++

Níže uvedený kód demonstruje použití výše uvedených řetězcových funkcí:

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>> jméno;> >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;> }>

>

>

Výstup

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++>