Een string wordt een array van karakters genoemd. In C++ wordt een stroom/reeks tekens opgeslagen in een char-array. C++ bevat de klasse std::string die wordt gebruikt om tekenreeksen weer te geven. Het is een van de meest fundamentele datatypes in C++ en wordt geleverd met een groot aantal ingebouwde functies. In dit artikel zullen we kijken naar de functies van stringberekeningen.
Wat is std::string?
De std::string is een klasse in C++ sinds C++98. Deze klasse is de standaardweergave voor een tekststring. Het bevat enkele typische tekenreeksbewerkingen zoals zoeken, vervangen, aaneenschakelen, vergelijken enz. Het is aanwezig in header-bestand.
Verklaring en initialisatie van string
std::string company = 'techcodeview.com!';>
Veelgebruikte tekenreeksfuncties in C++
De klasse std::string bevat functies die enkele algemene tekenreeksbewerkingen mogelijk maken. De onderstaande tabel bevat enkele van de meest gebruikte functies in C++:
| Ja nee. | Categorie | Functies en operators | Functionaliteit |
|---|---|---|---|
| 1. pad ingesteld in Java | Draadlengte | lengte() of maat() | Het retourneert de lengte van de string. |
| 2. | Toegang tot tekens | Indexeren (met behulp van array[index]) | Voor toegang tot individuele tekens met behulp van array-indexering. |
| bij() | Wordt gebruikt om toegang te krijgen tot een teken op een opgegeven index. | ||
| 3. | Tekenreeksen toevoegen en samenvoegen | + Exploitant | + operator wordt gebruikt om twee strings samen te voegen. |
| De functie append() voegt de ene tekenreeks toe aan het einde van de andere. | |||
| 4. | String-vergelijking | == Operator | U kunt tekenreeksen vergelijken met de operator ==. |
| De functie Compare() retourneert een geheel getal dat het vergelijkingsresultaat aangeeft. | |||
| 5. | Subtekenreeksen | Gebruik de functie substr() om een subtekenreeks uit een tekenreeks te extraheren. | |
| 6. | Zoeken | De functie find() retourneert de positie van de eerste keer dat een subtekenreeks voorkomt. | |
| 7. | Tekenreeksen wijzigen | vervangen() | Gebruik de functie Replace() om een deel van de tekenreeks te wijzigen. |
| invoegen() | De functie insert() voegt een subtekenreeks toe op een opgegeven positie. | ||
| wissen() | Gebruik de functie erase() om een deel van de tekenreeks te verwijderen. | ||
| 8. | Conversie | c_str() | Om een string in C-stijl te verkrijgen uit een std::string, kun je de functie c_str() gebruiken. |
Opmerking: De bovenstaande functies werken alleen voor tekenreeksen in C++-stijl (std::string-objecten) en niet voor tekenreeksen in C-stijl (reeks tekens).
1. Tekenreekslengte – lengte() of maat()
We kunnen de lengte van de string (aantal tekens) vinden met behulp van een van beide lengte() of maat() functie van de klasse std::string.
Syntaxis
string_object. size() or string_object. length()>
Parameters
- Deze functie gebruikt geen enkele parameter.
Winstwaarde
- Deze functie retourneert het aantal tekens in het stringobject.
Voorbeeld
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Het retourneert de lengte van de string tekst dat is 13.
2. Toegang tot tekens – at()
Over het algemeen hebben we toegang tot het karakter van een string met behulp van de [] array-subscriptoperator en indexering. Maar std::string heeft ook een functie met de naam bij() die kan worden gebruikt om toegang te krijgen tot de karakters van de string.
Syntaxis
string_object. at( index );>
Parameters
- index: Het vertegenwoordigt de positie van het teken in de string.
Winstwaarde
- Deze functie retourneert het teken dat aanwezig is op de inhoudsopgave.
Voorbeeld
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
De std::cout zal K op de console afdrukken omdat dit het teken is dat aanwezig is in index 3.
3. Tekenreeksen aaneenschakelen – append() of + Operator
We kunnen string in C++ samenvoegen met behulp van twee methoden:
1. + Operator
De operator + is overbelast in de std::string-klasse om tekenreeksaaneenschakeling uit te voeren.
Syntaxis
string_object1 + string_object2>
Voorbeeld
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
+ operator wordt gebruikt om twee strings samen te voegen. De tekenreeks volledige naam is techcodeview.com.
2. toevoegen()
De functie append() is een andere lidfunctie om twee tekenreeksen aan elkaar te koppelen.
Syntaxis
string_object1. append ( string2 )>
Parameters
- string2: Deze functie gebruikt de string die als parameter moet worden toegevoegd. Het kan zowel een C- als een C++-stijlreeks zijn.
Winstwaarde
- Verwijzing naar de laatste string.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> De functie append() voegt de ene tekenreeks toe aan het einde van de andere.
4. Tekenreeksvergelijking – Compare() of == Operator
Net als bij de aaneenschakeling kunnen we de tekenreeksvergelijking op twee manieren uitvoeren:
1. == Operator
De gelijkheidsoperator kan worden gebruikt om de twee tekenreeksen te vergelijken, aangezien deze voor deze bewerking in de klasse std::string overbelast is.
Syntaxis
string_object1 == string_object2>
Dit zal terugkeren WAAR als beide tekenreeksen gelijk zijn, wordt anders geretourneerd vals.
Voorbeeld
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Hier wordt Strings zijn niet gelijk afgedrukt omdat de operator == terugkeert vals.
2. vergelijk()
De functie Compare() is een lidfunctie van de klasse std::string die kan worden gebruikt om twee strings te vergelijken.
Syntaxis
str1. compare( str2 );>
Parameters
- str2: Het is de string die moet worden vergeleken. Het kan zowel een tekenreeks in C- als in C++-stijl zijn.
Winstwaarde
- Als de tekenreeksen gelijk zijn, retourneert u nul.
- Als str1 groter is dan str2, retourneert u de waarde >0
- Als str2 groter is dan str1, retourneert u de waarde <0
Voorbeeld
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Het resultaat bevat een waarde kleiner dan nul omdat str2 groter is dan str1.
We kunnen de substring van str2 ook vergelijken met behulp van de vergelijkingsfunctie():
str1.compare(position, length, str2);>
waar,
- position : positie van de eerste tekenreeks. lengte: lengte van de subtekenreeks. str2: String-object dat moet worden vergeleken.
5. Zoeken – vind()
Wij kunnen gebruik maken van de vinden() functie van de klasse std::string om te controleren of een bepaald teken of een substring aanwezig is in de string of een deel van de string.
Syntaxis van find()
str1.find(var);>
Parameters
- var: Het kan een tekenreeks in C-stijl, een tekenreeks in C++-stijl of een teken zijn dat in de tekenreeks moet worden doorzocht.
Winstwaarde
- Het retourneert de aanwijzer naar de eerste keer dat het teken of een subtekenreeks in de tekenreeks voorkomt.
Voorbeeld
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> De positievariabele bevat 4, wat het begin is van de eerste keer dat de string Programmering in stringtekst voorkomt.
6. Substring genereren – substr()
Wij kunnen gebruik maken van de substr()-functie om een deel van de string als een nieuw stringobject te genereren. Het is een lidfunctie van de klasse std::string.
Syntaxis van substr() in C
str1. substr ( start, end );>
Parameters
Python-lijst initialiseren
- start: Startpositie van de te genereren substring. end: Einde van de te genereren substring.
Retourtype
- Het retourneert het nieuw gemaakte stringobject.
Voorbeeld
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
In het bovenstaande voorbeeld. de sub string bevat de wereld.
Tekenreeksen wijzigen
Met de volgende functie kunnen we de huidige string wijzigen.
1. invoegen()
Met de functie insert() kunnen we niet alleen een string toevoegen, maar deze ook op de opgegeven positie toevoegen. Het is ook een lidfunctie van de klasse std::string.
Syntaxis
str1. insert (index, str2);>
Parameters
- str2: tekenreeks die moet worden ingevoegd. index: positie waar de nieuwe string moet worden ingevoegd
Retourtype
- Verwijzing naar de str1.
Voorbeeld
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. vervangen()
De functie Replace() vervangt het deel van de string door de gegeven andere string. In tegenstelling tot invoegen worden de tekens in het gedeelte waar de nieuwe string moet worden ingevoegd, verwijderd.
Syntaxis
str1. replace ( index, size, str2 );>
Parameters
- index: Index van waar u moet beginnen met het vervangen van de nieuwe string. maat: lengte van het deel van de snaar dat vervangen moet worden. str2: nieuwe string die moet worden ingevoegd.
Retourtype
- Verwijzing naar de str1.
Voorbeeld
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. wissen()
De functie erase() is een lidfunctie van de klasse std::string die wordt gebruikt om een teken of een deel van de tekenreeks te verwijderen.
Syntaxis
str1 .erase( start, end);>
Parameters
- start: startpositie. einde: Eindpositie.
Retourtype
- Verwijzing naar de str1.
Voorbeeld
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Converteer std::string naar C String – c_str)_
De c_str() functie is een lidfunctie die wordt gebruikt om de tekenreeks in C++-stijl, d.w.z. std::string-objecten, te converteren naar een tekenreeks in C++-stijl, d.w.z. een reeks tekens.
Syntaxis
str1.c_str()>
Parameters
- Deze functie gebruikt geen enkele parameter.
Winstwaarde
- Verwijzing naar de equivalente reeks tekens.
Voorbeeld
std::string str = 'C++'; const char* cstr = str.c_str()>
Voorbeeld van tekenreeksfuncties in C++
De onderstaande code demonstreert het gebruik van de hierboven gespecificeerde stringfuncties:
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>> naam;> >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;> }> |
>
>
Uitvoer
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++>