strings c with examples
Een intensieve kijk op de basisprincipes van strings in C ++.
In deze C ++ -serie hebben we tot nu toe vooral numerieke arrays in C ++ besproken. In deze tutorial bespreken we de manipulatie met character arrays die we simpelweg 'Strings' noemen.
Tekenreeks is meestal een tekenreeks in C-stijl die C ++ ondersteunt. Naast tekenarrays in C-stijl ondersteunt C ++ ook een tekenreeksklasse 'std :: string'. Verder zullen we in deze tutorial zowel de soorten strings bespreken als het verschil ertussen en over het programmeren van elk type in C ++.
Bekijk de volledige lijst met C ++ - zelfstudies in deze serie.
Wat je leert:
Character Arrays (C-stijl strings)
De tekenreeks in c-stijl is een tekenreeks die eindigt met een nul-teken ' 0'. Daarom kunnen we een array van het type char en de afmetingen of grootte van de arrays definiëren en vervolgens kunnen we deze initialiseren met een string of array van karakters.
Merk op dat het de compiler is die een string beëindigt met een null-karakter, dus als we de character array initialiseren met een string (in het dubbele aanhalingsteken ''), dan moeten we extra ruimte laten voor het null-karakter terwijl we de grootte van een array aangeven .
Laten we enkele voorbeelden nemen van het declareren en initialiseren van character arrays.
Alle bovenstaande definities zijn geldige C-stijl stringdefinities in C ++. Merk op dat we de werkelijke grootte kunnen aangeven of we kunnen de grootte leeg laten, zodat de compiler de grootte kan aanpassen, afhankelijk van de string die we hebben geïnitialiseerd.
Laten we een Voorbeeld van het lezen en schrijven van tekenarray in C ++
Hieronder is een eenvoudig programma gegeven dat de string leest met cin en deze uitvoert met cout.
Uitgang 1:
SoftwareTestingHelp.com
je hebt ingevoerd: SoftwareTestingHelp.com
Uitgang 2:
Dit is een snaar in C-stijl
je hebt ingevoerd: dit
Als we beide uitvoer vergelijken, zien we dat toen we de eerste string 'SoftwareTestingHelp.com' invoerden, deze werd afgedrukt zoals hij is.
Maar in de tweede uitvoer, hoewel we de string hebben ingevoerd als 'Dit is een C-stijl string', was de uitvoer alleen 'Dit'.
Het verschil in uitvoer is dat de ‘>>’ operator van cin die wordt gebruikt om de tekenreeks te lezen, wordt behandeld als ‘scanf’ -functie van C, die alleen leest tot de spatie wordt aangetroffen. Daarom is ‘cin with >>’ geschikt om tekenarrays zonder spatie te lezen.
wat is apk-bestand in Android
Dus terwijl de tweede uitvoerruimte werd aangetroffen, nam de cin-functie deze als het einde van de string en las alleen het eerste woord.
Om een hele regel tekens inclusief de spaties te lezen, gebruikt C ++ de 'get' -functie.
Een voorbeeldprogramma met de functie get wordt hieronder weergegeven:
Uitgang:
Dit is softwareTestinghelp.com
je kwam binnen: Dit is softwareTestinghelp.com
Zoals getoond in het voorbeeld gebruikt de get-functie van cin twee argumenten. Het eerste argument is de tekenreeksvariabele waarin de tekenreeks moet worden gelezen, terwijl het tweede argument de maximale grootte van de reeks is.
C-stijl strings ondersteunen ook tal van stringfuncties waarmee de gebruikers de strings kunnen manipuleren. Deze functies worden gedefinieerd in de koptekst “cstring”.
We presenteren hieronder een tabel met verschillende stringfuncties die kunnen worden gebruikt om C-stijl strings te manipuleren.
Niet doen | Functie | Argumenten | Omschrijving |
---|---|---|---|
1 | strcpy | s1, s2 | Kopieert string s2 naar string s1 |
twee | strcat | s1, s2 | Voegt string s2 toe aan of voegt deze samen aan het einde van string s1 |
3 | strlen | s1 | Geeft de lengte van tekenreeks s1 terug |
4 | strcmp | s1, s2 | Retourneert 0: s1 en s2 zijn hetzelfde <0:s1 |
5 | strchr | s1, ch | Geeft een pointer terug naar het eerste voorkomen van teken ch in string s1 en de string vanaf daar |
6 | strstr | s1, s2 | Retourneert de eerste keer dat tekenreeks s2 voorkomt in tekenreeks s1 |
Het volgende programma toont het gebruik van enkele van deze functies in C ++:
Uitgang:
Lengte van firstStr: 31
Resulterende tekenreeks (secStr): softwareTesting
Vergelijking van firstStr en secStr: -31
Concatenated secStr: softwareTesting voor jou
De eerste keer dat i in firststr at: s voorkomt, is softwareTestingHelp.com
Tekenreeksklasse in C ++
String in C ++ die wordt gedefinieerd door de klasse 'std :: string' is een weergave van de stroom tekens in een object. Met andere woorden, de klasse String is een verzameling tekenreeksobjecten. Deze string class is een onderdeel van de std namespace en wordt gedefinieerd in de header “string.h”.
Laten we enkele van de basisverschillen tussen de tekenreeksklasse en de tekenreeks bespreken.
- Hoewel de karakter-arrays die we hierboven hebben besproken statisch worden toegewezen tijdens het compileren, zijn strings objecten en kunnen ze daarom dynamisch worden toegewezen.
- Omdat tekenarrays statisch van aard zijn, kunnen ze niet worden verkleind of uitgebreid nadat ze zijn gedefinieerd. Dus als we een tekenreeks met grootte 100 hebben, en ik heb het geïnitialiseerd met het woord 'Hallo', dan is de resterende ruimte verspild.
Char mystr (100) = 'Hallo';
Hier worden de overige 95 locaties verspild.
In tegenstelling hiermee zijn tekenreeksobjecten dynamisch van aard en nemen ze de exacte ruimte voor de waarde in beslag.
- Character arrays presteren sneller, terwijl strings langzamer zijn.
- Character arrays hebben een paar functies die erop werken die ze kunnen manipuleren. String-klasse heeft talrijke functies, waaronder de iteratorfuncties.
Dit zijn enkele van de basisverschillen tussen de tekenreeks en de tekenreeksobjectklasse.
Vervolgens zullen we een paar voorbeelden van stringklasse zien, samen met enkele basisbewerkingen die worden uitgevoerd op objecten van de stringklasse.
Een voorbeeld om de stringklasse te declareren en te initialiseren.
In het bovenstaande voorbeeld hebben we een string-object gedeclareerd en geïnitialiseerd met behulp van de 'string' -klasse. Dit is een eenvoudig voorbeeld. Laten we nu een programma hebben om de string van de gebruiker te lezen en ook enkele stringfuncties demonstreren, waaronder het vinden van de lengte en het vergelijken van twee strings.
Uitgang:
Voer de string in
Software Testen Help
De ingevoerde string is: SoftwareTestingHelp
Lengte van de string is: 19
Twee snaren zijn gelijk
Nieuwe str1: SoftwareTestingHelp.com
str nieuwe lengte: 0
In de bovenstaande illustratie hebben we talloze stringfuncties gebruikt om de strings te manipuleren. Na het declareren van de string gebruiken we de “getline” functie van de string class om de string uit de standaard input te lezen.
Zodra we de string hebben gelezen, vinden we de lengte met behulp van de functie 'lengte'. Als we twee strings moeten vergelijken om te evalueren of ze gelijk zijn of niet, dan kunnen we de “vergelijk” -functie van de stringklasse gebruiken. Als de functie 0 retourneert, zijn de twee strings gelijk, anders retourneert de functie een waarde die niet nul is.
Nog een andere functie is om een andere string toe te voegen aan het einde van de bestaande string. Dit is de 'append' -functie. In dit voorbeeld voegen we ‘.com’ toe aan de reeds bestaande string str1 met de waarde ‘softwaretesting’.
De laatste functie in het voorbeeld is de functie clear die wordt gebruikt om de inhoud van het aanroepende stringobject te wissen. In dit voorbeeld wissen we de inhoud van het str-object zodat de lengte 0 wordt.
Gevolgtrekking
In deze tutorial hebben we de character array behandeld die ook wel C-style strings wordt genoemd, samen met de basisprincipes van de string class. String-klasse wordt geleverd met meer hulpprogramma's zoals de iteratorklasse, omdat het een containerklasse is.
We zullen meer zien over string class en zijn functies in onze aankomende STL tutorials !!
Bezoek hier om de C ++ Training Series For All te zien.
Aanbevolen literatuur
- Shell-sortering in C ++ met voorbeelden
- Datum- en tijdfuncties in C ++ met voorbeelden
- Java String met String Buffer en String Builder Tutorial
- Selectie sorteren in C ++ met voorbeelden
- Python String-functies
- Python DateTime-zelfstudie met voorbeelden
- Snijd Commando in Unix met voorbeelden
- 70+ BESTE C ++ Tutorials om GRATIS C ++ Programmeren te leren