En sträng kallas en array av tecken. I C++ lagras en ström/sekvens av tecken i en char-array. C++ inkluderar klassen std::string som används för att representera strängar. Det är en av de mest grundläggande datatyperna i C++ och den kommer med en enorm uppsättning inbyggda funktioner. I den här artikeln kommer vi att titta på funktionerna för strängberäkningar.
Vad är std::string?
std::strängen är en klass i C++ sedan C++98. Denna klass är standardrepresentationen för en textsträng. Den innehåller några typiska strängoperationer som hitta, ersätta, sammanfoga, jämföra etc. Den finns i header-fil.
Deklaration och initiering av sträng
std::string company = 'techcodeview.com!';>
Vanligt använda strängfunktioner i C++
Klassen std::string innehåller funktioner för att tillhandahålla några vanliga strängoperationer. Tabellen nedan innehåller några av de mest använda funktionerna i C++:
| Ja Nej. | Kategori | Funktioner och operatörer | Funktionalitet |
|---|---|---|---|
| 1. exempel binärt sökträd | Stränglängd | length() eller storlek() | Det kommer att returnera längden på strängen. |
| 2. | Tillgång till karaktärer | Indexering (med array[index]) | För att komma åt enskilda tecken med arrayindexering. |
| på() | Används för att komma åt ett tecken vid ett specificerat index. | ||
| 3. | Lägga till och sammanfoga strängar | + Operatör | + operator används för att sammanfoga två strängar. |
| Funktionen append() lägger till en sträng i slutet av en annan. | |||
| 4. | Strängjämförelse | == Operatör | Du kan jämföra strängar med operatorn ==. |
| Funktionen compare() returnerar ett heltalsvärde som anger jämförelseresultatet. | |||
| 5. | Delsträngar | Använd substr()-funktionen för att extrahera en delsträng från en sträng. | |
| 6. | Sökande | Funktionen find() returnerar positionen för den första förekomsten av en delsträng. | |
| 7. | Ändra strängar | byta ut() | Använd funktionen replace() för att ändra en del av strängen. |
| Föra in() | Funktionen insert() lägger till en delsträng på en angiven position. | ||
| radera() | Använd funktionen erase() för att ta bort en del av strängen. | ||
| 8. | Omvandling | c_str() | För att få en sträng i C-stil från en std::sträng kan du använda funktionen c_str(). |
Notera: Ovanstående funktioner fungerar bara för C++ Style-strängar (std::string-objekt) inte för C Style-strängar (array av tecken).
1. Stränglängd – längd() eller storlek()
Vi kan hitta längden på strängen (antal tecken) med antingen length() eller storlek() funktion för klassen std::string.
Syntax
string_object. size() or string_object. length()>
Parametrar
- Denna funktion tar inte någon parameter.
Returvärde
- Denna funktion returnerar antalet tecken i strängobjektet.
Exempel
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Det kommer att returnera längden på strängen text vilket är 13.
2. Få åtkomst till tecken – at()
I allmänhet kan vi komma åt tecknet i en sträng med hjälp av [] array subscript operator och indexering. Men std::string har också en funktion som heter på() som kan användas för att komma åt strängens tecken.
Syntax
string_object. at( index );>
Parametrar
- index: Det representerar tecknets position i strängen.
Returvärde
- Denna funktion returnerar tecknet som finns vid index.
Exempel
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
Std::cout kommer att skriva ut K på konsolen eftersom det är tecknet som finns i index 3.
3. Sammanfoga strängar – append() eller + Operator
Vi kan sammanfoga strängar i C++ med två metoder:
1. + Operatör
Operatorn + är överbelastad i klassen std::string för att utföra strängsammansättning.
Syntax
string_object1 + string_object2>
Exempel
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
+ operator används för att sammanfoga två strängar. Strängen fullName kommer att vara techcodeview.com.
2. append()
Funktionen append() är en annan medlemsfunktion för att sammanfoga två strängar.
Syntax
string_object1. append ( string2 )>
Parametrar
- string2: Denna funktion tar strängen som ska läggas till som en parameter. Det kan vara både C eller C++ Style sträng.
Returvärde
- Referens till den sista strängen.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> Funktionen append() lägger till en sträng i slutet av en annan.
4. String Comparison – compare() eller == Operator
Precis som sammanlänkningen kan vi göra strängjämförelsen med två metoder:
1. == Operatör
Likhetsoperatorn kan användas för att jämföra de två strängarna eftersom den är överbelastad för denna operation i klassen std::string.
Syntax
string_object1 == string_object2>
Detta kommer tillbaka Sann om båda strängarna är lika, annars returneras falsk.
Exempel
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Här kommer strängar som inte är lika att skrivas ut eftersom operatorn == kommer tillbaka falsk.
2. jämför()
Compare()-funktionen är en medlemsfunktion i klassen std::string som kan användas för att jämföra två strängar.
Syntax
str1. compare( str2 );>
Parametrar
- str2: Det är strängen som ska jämföras. Det kan vara både C eller C++ stil sträng.
Returvärde
- Om strängarna är lika, återvänd noll.
- Om str1 är större än str2, returnera värde >0
- Om str2 är större än str1, returnera värdet <0
Exempel
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Resultatet kommer att innehålla ett värde mindre än noll eftersom str2 är större än str1.
Vi kan också jämföra delsträngen för str2 med jämförelsefunktionen():
str1.compare(position, length, str2);>
var,
- position : positionen för den första teckendelsträngen. längd: längden på delsträngen. str2: Strängobjekt som ska jämföras.
5. Sökning – find()
Vi kan använda hitta() funktion för klassen std::string för att kontrollera om ett givet tecken eller en delsträng finns i strängen eller en del av strängen.
Syntax för find()
str1.find(var);>
Parametrar
- var: Det kan vara en C-stilsträng, C++-stilsträng eller ett tecken som ska sökas i strängen.
Returvärde
- Den returnerar pekaren till den första förekomsten av tecknet eller en delsträng i strängen.
Exempel
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> Positionsvariabeln kommer att innehålla 4 som är början på den första förekomsten av strängen Programmering i strängtext.
6. Generera delsträng – substr()
Vi kan använda substr() funktion för att generera en del av strängen som ett nytt strängobjekt. Det är en medlemsfunktion i klassen std::string.
Syntax för substr() i C
str1. substr ( start, end );>
Parametrar
- start: Startposition för delsträngen som ska genereras. end: Slut på delsträngen som ska genereras.
Returtyp
- Det returnerar det nyskapade strängobjektet.
Exempel
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
I exemplet ovan. de sub sträng kommer att innehålla världen.
Ändra strängar
Följande funktion låter oss ändra den aktuella strängen.
1. infoga()
Funktionen insert() låter oss inte bara lägga till en sträng utan låter oss också lägga till den på den angivna positionen. Det är också en medlemsfunktion i klassen std::string.
Syntax
str1. insert (index, str2);>
Parametrar
- str2: sträng som ska infogas. index: positionen för var den nya strängen ska infogas
Returtyp
- Referens till str1.
Exempel
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. ersätt()
Funktionen replace() ersätter delen av strängen med den givna andra strängen. Till skillnad från insert tas tecknen i den del där den nya strängen ska infogas bort.
Syntax
str1. replace ( index, size, str2 );>
Parametrar
- index: Index över var man ska börja ersätta den nya strängen. storlek: längden på den del av strängen som ska bytas ut. str2: ny sträng som ska infogas.
Returtyp
- Referens till str1.
Exempel
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. radera()
Erase()-funktionen är en medlemsfunktion i klassen std::string som används för att ta bort ett tecken eller en del av strängen.
Syntax
str1 .erase( start, end);>
Parametrar
- start: Startposition. slut: Slutläge.
Returtyp
- Referens till str1.
Exempel
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Konvertera std::string till C String – c_str)_
Funktionen c_str() är en medlemsfunktion som används för att konvertera C++-stilsträngen, dvs. std::string-objekt, till C-stilsträng, dvs. en array av tecken.
25 c till k
Syntax
str1.c_str()>
Parametrar
- Denna funktion tar inte någon parameter.
Returvärde
- Pekare till motsvarande teckenuppsättning.
Exempel
std::string str = 'C++'; const char* cstr = str.c_str()>
Exempel på strängfunktioner i C++
Nedanstående kod visar användningen av ovan angivna strängfunktioner:
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>> namn;> >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;> }> |
>
>
Produktion
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++>