De functie substr() gebruiken in C++

How Use Substr Function C



De manier om een ​​deel van een string te knippen, wordt een substring genoemd. De functie substr() bestaat in C++ om een ​​nieuwe string te genereren door een bepaald gedeelte uit een string te knippen. De string.h bibliotheekbestand moet worden opgenomen om deze functie te gebruiken. Deze functie heeft twee argumenten. Het eerste argument bevat de startpositie van de nieuwe string en het tweede argument bevat de lengte van de string. De manier om de functie substr() in C++ te gebruiken, is in deze zelfstudie uitgelegd.

Voorwaarde

Voordat u de voorbeelden van deze tutorial bekijkt, moet u controleren of de g++-compiler is geïnstalleerd of niet in het systeem. Als u Visual Studio Code gebruikt, installeer dan de benodigde extensies om de C++-broncode te compileren om de uitvoerbare code te maken. Hier is de toepassing Visual Studio Code gebruikt om de C++-code te compileren en uit te voeren.







Syntaxis

string substr (size_t pos = 0, size_t len ​​= npos) const;



Hier bevat het eerste argument de startpositie van waaruit de subtekenreeks zal worden gestart, en het tweede argument bevat de lengte van de subtekenreeks. De functie retourneert de subtekenreeks als de geldige startpositie en lengte zijn gegeven. De verschillende toepassingen van deze functie worden getoond in het volgende deel van deze tutorial.



Voorbeeld 1: Eenvoudig gebruik van substr()

Het volgende voorbeeld toont het meest voorkomende en eenvoudige gebruik van de functie substr(). Maak een C++-bestand met de volgende code om een ​​subtekenreeks te genereren op basis van een tekenreekswaarde. Een string van meerdere woorden is toegewezen aan een stringvariabele. Vervolgens hebben de geldige startpositie en de lengte van de subtekenreeks in de argumentwaarden van de functie substr(). Zowel de originele string als de substring worden afgedrukt na het uitvoeren van de code.





//Benodigde bibliotheken opnemen
#erbij betrekken
#erbij betrekken


inthoofd() {
//Definieer een stringvariabele
uur::snaarorigineel='Welkom bij Linuxhint';
// Knip de sub-tekenreeks met substr ()
uur::snaarnieuwszender=origineelstr.substr (elf,9);
// Print de originele string
uur::kosten <<'De originele string is :' <<origineel<< 'N';
// Druk de substring af
uur::kosten <<'De subtekenreeks is :' <<nieuwszender<< 'N';

opbrengst 0;
}

Uitgang:

Volgens de code is de originele string ' Welkom bij LinuxHint ‘. 11 heeft als startpositie van de substring de positie van het 'L'-teken gegeven, en 9 heeft als lengtewaarde van de substring gegeven. ‘ LinuxHint ' is teruggekeerd als de uitvoer van de functie substr() na het uitvoeren van de code.



Voorbeeld 2: Substr() gebruiken op basis van de positie van een specifieke string

De volgende code genereert de substring na het zoeken naar de positie van de specifieke string. Maak een C++-bestand met de volgende code om de code te testen. In de code is een stringwaarde van de meerdere woorden gedefinieerd. Vervolgens wordt de positie van een bepaalde string in de hoofdstring gezocht met behulp van de functie find(). De functie substr() is gebruikt om de subtekenreeks te genereren vanaf het begin van de tekenreeks tot de positiewaarde die wordt geretourneerd door de functie find().

//Benodigde bibliotheken opnemen
#erbij betrekken
#erbij betrekken
gebruik makend van naamruimteuur;

inthoofd()
{
uur::snaarstrData= 'Ik hou van programmeren in C++';

// Laten we de positie van '--' zoeken met str.find()
intpositie=strData.vind('programmeren');

// We krijgen de substring tot dit patroon
uur::snaarnieuwszender=strData.substr(0, positie);

uur::kosten <<strData<< 'N';
uur::kosten <<nieuwszender<< 'N';

opbrengst 0;
}

Uitgang:

Volgens de code is de belangrijkste tekenreekswaarde, Ik hou van programmeren in C++ en de waarde van de zoekreeks is, ' programmeren’ die bestaat in de hoofdreeks. Dus de uitvoer is: ' Ik hou van C++ ' na het uitvoeren van de code.

Voorbeeld 3: Substr() gebruiken met uitzonderingsbehandeling

De functie substr() is gebruikt met uitzonderingsafhandeling in de volgende code. De uitzondering wordt gegenereerd als de ongeldige startpositie wordt gegeven in de functie substr(). Maak een C++-bestand met de volgende code om de code te testen. In het try-blok is een tekenreekswaarde van één woord toegewezen en is er een ongeldige startpositie gebruikt in de substr()-functie die een uitzondering zal veroorzaken en het foutbericht zal afdrukken.

//Benodigde bibliotheken opnemen
#erbij betrekken
#erbij betrekken

inthoofd() {
proberen{

//Definieer een stringvariabele
uur::snaarorigineel='Linuxhint';
// Knip de sub-tekenreeks met substr ()
uur::snaarnieuwszender=origineelstr.substr (elf,9);
// Druk de substring af
uur::kosten <<'De subtekenreeks is :' <<nieuwszender<< 'N';
}
vangst (constuur::buiten bereik) {
uur::zeker << 'De positie is buiten bereik.N';
}
opbrengst 0;
}

Uitgang:

Volgens de code is de belangrijkste tekenreekswaarde, LinuxHint en de waarde van de startpositie is 11 die niet bestaat. De uitzondering is dus gegenereerd en het foutbericht is afgedrukt na het uitvoeren van de code.

Voorbeeld 4: Substr() gebruiken om de string te splitsen

Het volgende voorbeeld toont het gebruik van de functie substr() om een ​​tekenreeks te splitsen op basis van een scheidingsteken. De functie find() is gebruikt om de positie van het scheidingsteken te doorzoeken en de functie erase() is gebruikt om de gesplitste tekenreeks met het scheidingsteken uit de hoofdtekenreeks te verwijderen. De 'while'-lus is gebruikt om alle posities van het scheidingsteken in de hoofdreeks te vinden en de gesplitste waarde op te slaan in de vectorarray. Vervolgens zijn de waarden van de vectorarray afgedrukt.

//Benodigde bibliotheken opnemen
#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd(){
//Definieer de tekenreeks
uur::snaarstringData= 'PHP:C++:Python:';
//Definieer het scheidingsteken
uur::snaarscheidingsteken= ':';
//Declareer de vectorvariabele
uur::vectortalen{};
//Declareer integer-variabele
intpositie;
//Declareer stringvariabele
uur::snaaroutstr;
/ *
Splits de string met de functie substr()
en het gesplitste woord toevoegen aan de vector
* /

terwijl ((positie=tekenreeksData.vind(scheidingsteken)) !=uur::snaar::npos) {
talen.terugduwen(tekenreeksData.substr(0, positie));
tekenreeksData.wissen(0, positie+scheidingsteken.lengte());
}
// Print alle gesplitste woorden
voor (const auto &outstr:talen) {
uur::kosten <<outstr<<uur::eindel;
}
opbrengst 0;
}

Uitgang:

Volgens de code is de belangrijkste tekenreekswaarde: PHP:C++:Python en de waarde van het scheidingsteken is, ' : ’ . De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script.

Conclusie

Het belangrijkste doel van het gebruik van de functie substr() is om een ​​subtekenreeks uit een tekenreeks op te halen door de startpositie en de lengte van de subtekenreeks te vermelden. De verschillende toepassingen van deze functie zijn in deze zelfstudie uitgelegd aan de hand van meerdere voorbeelden om de nieuwe C++-gebruikers te helpen deze op de juiste manier in hun code te gebruiken.