Ř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ů. |
| 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 ==. |
| Funkce Compare() vrací celočíselnou hodnotu označující výsledek porovnání. | |||
| 5. | Podřetězce | Pomocí funkce substr() extrahujte podřetězec z řetězce. | |
| 6. | Hledání | 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++>