logo

Tekenreeksen in C++

C++-strings zijn reeksen tekens die zijn opgeslagen in een char-array. Strings worden gebruikt om woorden en tekst op te slaan. Ze worden ook gebruikt om gegevens op te slaan, zoals cijfers en andere soorten informatie. Tekenreeksen in C++ kunnen worden gedefinieerd met behulp van de std::string-klasse of de Karakterarrays in C-stijl.

Tekenreeksen in C++

1. C-stijl snaren

Deze tekenreeksen worden opgeslagen als de gewone oude reeks tekens, afgesloten met a nulteken ‘ ’ . Ze zijn het type tekenreeksen dat C++ heeft geërfd van de C-taal.



Syntaxis:

char str[] = 'techcodeview.com';>

Voorbeeld:

C++




// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }>

>

>

Uitvoer

techcodeview.com>

2. std::string Klasse

Dit zijn de nieuwe typen tekenreeksen die in C++ worden geïntroduceerd als std::string-klasse gedefinieerd in het headerbestand. Dit biedt veel voordelen ten opzichte van conventionele C-stijl snaren, zoals dynamische grootte, lidfuncties, enz.

Syntaxis:

std::string str('techcodeview.com');>

Voorbeeld:

C++




// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }>

>

>

Uitvoer

techcodeview.com>

Er is nog een manier waarop we strings kunnen maken die hetzelfde karakter steeds weer herhalen.

Syntaxis:

std::string str(number,character);>

Voorbeeld:

C++




#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }>

>

>

Uitgang:

ggggg>

Manieren om een ​​string te definiëren in C++

Tekenreeksen kunnen in C++ op verschillende manieren worden gedefinieerd. Strings zijn toegankelijk vanuit de standaardbibliotheek met behulp van de stringklasse. Karakterarrays kunnen ook worden gebruikt om tekenreeksen te definiëren. String biedt een uitgebreide reeks functies, zoals zoeken en manipuleren, wat veelgebruikte methoden zijn. Ondanks dat deze minder geavanceerd is dan de stringklasse, wordt deze methode nog steeds veel gebruikt, omdat deze efficiënter en gemakkelijker te gebruiken is. Manieren om een ​​string in C++ te definiëren zijn:

  • String-trefwoord gebruiken
  • Gebruik C-stijl snaren

1. String-trefwoord gebruiken

Het is handiger om een ​​string te definiëren met het trefwoord string in plaats van het trefwoord array te gebruiken, omdat dit gemakkelijk te schrijven en te begrijpen is.

Syntaxis:

string s = 'techcodeview.com'; string s('techcodeview.com');>

Voorbeeld:

C++




// C++ Program to demonstrate use of string keyword> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >string str(>'techcodeview.com'>);> >cout <<>'s = '> << s << endl;> >cout <<>'str = '> << str << endl;> >return> 0;> }>

>

>

Uitvoer

s = techcodeview.com str = techcodeview.com>

2. Gebruik snaren in C-stijl

Het gebruik van tekenreeksbibliotheken in C-stijl, zoals strcpy(), strcmp() en strcat() om tekenreeksen te definiëren. Deze methode is complexer en wordt niet zo veel gebruikt als de andere twee, maar kan handig zijn als je met oudere code te maken hebt of als je prestatie nodig hebt.

char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';>

Voorbeeld:

C++




// C++ Program to demonstrate C-style string declaration> #include> using> namespace> std;> int> main()> {> >char> s1[] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s2[4] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s3[4] =>'gfg'>;> >char> s4[] =>'gfg'>;> >cout <<>'s1 = '> << s1 << endl;> >cout <<>'s2 = '> << s2 << endl;> >cout <<>'s3 = '> << s3 << endl;> >cout <<>'s4 = '> << s4 << endl;> >return> 0;> }>

>

>

Uitvoer

s1 = gfg s2 = gfg s3 = gfg s4 = gfg>

Nog een voorbeeld van een string in C-stijl:

C++




#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }>

>

>

Uitvoer

Your string is= Geeeks for Geeks>

Hoe u stringinvoer kunt gebruiken in C++

Stringinvoer betekent het accepteren van een string van een gebruiker. In C++. We hebben verschillende manieren om input van de gebruiker te ontvangen, afhankelijk van de string. De meest gebruikelijke manier is om input te nemen aan het eten trefwoord met de extractieoperator (>>) in C++. Methoden om een ​​string als invoer te nemen zijn:

  • aan het eten
  • lijn krijgen
  • stringstroom

1. Cin gebruiken

De eenvoudigste manier om stringinvoer te verkrijgen is door gebruik te maken van de aan het eten commando samen met de streamextractie-operator (>>).

Syntaxis:

cin>>s;>

Voorbeeld:

C++




b+ bomen
// C++ Program to demonstrate string input using cin> #include> using> namespace> std;> int> main() {> >string s;> > >cout<<>'Enter String'>< cin>>s; uit<<'String is: '< return 0; }>

>

bereid je voor op testmockito
>

Uitvoer

Enter String String is:>

Uitgang:

Enter String techcodeview.com String is: techcodeview.com>

2. Getline gebruiken

De getline()-functie in C++ wordt gebruikt om een ​​string uit een invoerstroom te lezen. Het wordt gedeclareerd in het headerbestand.

Syntaxis:

getline(cin,s);>

Voorbeeld:

C++




// C++ Program to demonstrate use of getline function> #include> using> namespace> std;> int> main()> {> >string s;> >cout <<>'Enter String'> << endl;> >getline(cin, s);> >cout <<>'String is: '> << s << endl;> >return> 0;> }>

>

>

Uitvoer

Enter String String is:>

Uitgang:

Enter String techcodeview.com String is: techcodeview.com>

3. Stringstream gebruiken

De stringstream-klasse in C++ wordt gebruikt om meerdere strings tegelijk als invoer te gebruiken.

Syntaxis:

stringstream stringstream_object(string_name);>

Voorbeeld:

C++




// C++ Program to demonstrate use of stringstream object> #include> #include> #include> using> namespace> std;> int> main()> {> >string s =>' techcodeview.com to the Moon '>;> >stringstream obj(s);> >// string to store words individually> >string temp;> >//>> operator leest uit het stringstream-object> >while> (obj>> temperatuur) {> >cout << temp << endl;> >}> >return> 0;> }>

>

>

Uitvoer

techcodeview.com to the Moon>

Hoe tekenreeksen doorgeven aan functies?

Op dezelfde manier waarop we een array aan een functie doorgeven, kunnen strings in C++ als karakterarrays aan functies worden doorgegeven. Hier is een voorbeeldprogramma:

Voorbeeld:

C++




// C++ Program to print string using function> #include> using> namespace> std;> void> print_string(string s)> {> >cout <<>'Passed String is: '> << s << endl;> >return>;> }> int> main()> {> >string s =>'techcodeview.com'>;> >print_string(s);> >return> 0;> }>

>

>

Uitvoer

Passed String is: techcodeview.com>

Aanwijzers en snaren

Pointers in C++ zijn symbolische representaties van adressen. Ze stellen programma's in staat call-by-reference te simuleren en dynamische datastructuren te creëren en te manipuleren. Door pointers te gebruiken kunnen we het eerste teken van de string verkrijgen, wat het startadres van de string is. Zoals hieronder weergegeven, kan de gegeven string worden geopend en afgedrukt via de pointers.

Voorbeeld:

C++




// C++ Program to print string using pointers> #include> using> namespace> std;> int> main()> {> >string s =>'Geeksforgeeks'>;> >// pointer variable declared to store the starting> >// address of the string> >char>* p = &s[0];> >// this loop will execute and print the character till> >// the character value is null this loop will execute and> >// print the characters> >while> (*p !=>' '>) {> >cout << *p;> >p++;> >}> >cout << endl;> >return> 0;> }>

>

>

Uitvoer

Geeksforgeeks>

Verschil tussen String- en Character-array in C++

Het belangrijkste verschil tussen een string en een karakterarray is dat strings onveranderlijk zijn, terwijl karakterarrays dat niet zijn.

Snaar

Karakterreeks

Strings definiëren objecten die kunnen worden weergegeven als stringstreams. Het null-teken beëindigt een reeks tekens.
Er treedt geen Array-verval op in strings, omdat strings worden weergegeven als objecten.

De dreiging van

array verval

is aanwezig in het geval van de karakterarray

Een stringklasse biedt talloze functies voor het manipuleren van strings. Karakterarrays bieden geen ingebouwde functies om tekenreeksen te manipuleren.
Geheugen wordt dynamisch toegewezen. De grootte van de karakterarray moet statisch worden toegewezen.

Meer weten over de verschil tussen strings en karakterarrays in C++

C++ String-functies

C++ biedt een aantal ingebouwde functies die worden gebruikt voor het manipuleren van tekenreeksen, zoals de functies strcpy() en strcat() voor het kopiëren en samenvoegen van tekenreeksen. Sommige ervan zijn:

Functie

Beschrijving

lengte() Deze functie retourneert de lengte van de tekenreeks.
ruil() Deze functie wordt gebruikt om de waarden van 2 strings om te wisselen.
maat() Wordt gebruikt om de grootte van de string te vinden
formaat wijzigen() Deze functie wordt gebruikt om de lengte van de string aan te passen tot het opgegeven aantal tekens.
vinden() Wordt gebruikt om de string te vinden die in parameters wordt doorgegeven
terugduwen() Deze functie wordt gebruikt om het doorgegeven teken aan het einde van de string te pushen
pop_back() Deze functie wordt gebruikt om het laatste teken uit de string te verwijderen
duidelijk() Deze functie wordt gebruikt om alle elementen van de string te verwijderen.
strncmp() Deze functie vergelijkt maximaal het eerste aantal bytes van beide doorgegeven tekenreeksen.
strncpy() Deze functie is vergelijkbaar met de strcpy()-functie, behalve dat er maximaal n bytes van src worden gekopieerd
strhr() Deze functie lokaliseert de laatste keer dat een teken in de string voorkomt.
gebarsten() Deze functie voegt een kopie van de bronreeks toe aan het einde van de doelreeks
vinden() Deze functie wordt gebruikt om naar een bepaalde substring binnen een string te zoeken en retourneert de positie van het eerste teken van de substring.
vervangen() Deze functie wordt gebruikt om elk element in het bereik [eerste, laatste) dat gelijk is aan de oude waarde te vervangen door een nieuwe waarde.
substr() Deze functie wordt gebruikt om een ​​substring van een gegeven string te creëren.
vergelijken() Deze functie wordt gebruikt om twee tekenreeksen te vergelijken en retourneert het resultaat in de vorm van een geheel getal.
wissen() Deze functie wordt gebruikt om een ​​bepaald deel van een string te verwijderen.

C++ Strings-iteratorfuncties

De ingebouwde string-iteratorfuncties in C++ bieden de programmeur een gemakkelijke manier om stringelementen te wijzigen en te doorlopen. Deze functies zijn:

Functies Beschrijving
beginnen() Deze functie retourneert een iterator die naar het begin van de tekenreeks wijst.
einde() Deze functie retourneert een iterator die naar het einde van de tekenreeks verwijst.
zoek() Deze functie wordt gebruikt om de laatste keer dat de string voorkomt te vinden.
rbegin() Deze functie retourneert een omgekeerde iterator die naar het einde van de tekenreeks wijst.
veroorzaken() Deze functie retourneert een omgekeerde iterator die naar het begin van de tekenreeks wijst.
cbegin() Deze functie retourneert een const_iterator die naar het begin van de tekenreeks wijst.
een paar() Deze functie retourneert een const_iterator die naar het einde van de tekenreeks wijst.
crbegin() Deze functie retourneert een const_reverse_iterator die naar het einde van de tekenreeks wijst.
crend() Deze functie retourneert een const_reverse_iterator die naar het begin van de tekenreeks wijst.

Voorbeeld:

C++




// C++ Program to demonstrate string iterator functions> #include> using> namespace> std;> int> main()> {> >// declaring an iterator> >string::iterator itr;> >// declaring a reverse iterator> >string::reverse_iterator rit;> >string s =>'techcodeview.com'>;> >itr = s.begin();> > >cout <<>'Pointing to the start of the string: '> << *itr<< endl;> >itr = s.end() - 1;> >cout <<>'Pointing to the end of the string: '> << *itr << endl;> >rit = s.rbegin();> >cout <<>'Pointing to the last character of the string: '> << *rit << endl;> >rit = s.rend() - 1;> >cout <<>'Pointing to the first character of the string: '> << *rit << endl;> >return> 0;> }>

>

>

Uitvoer

Pointing to the start of the string: G Pointing to the end of the string: s Pointing to the last character of the string: s Pointing to the first character of the string: G>

Tekenreekscapaciteitsfuncties

In C++ worden tekenreekscapaciteitsfuncties gebruikt om de tekenreeksgrootte en -capaciteit te beheren. Primaire functies van capaciteit zijn onder meer:

Functie Beschrijving
lengte() Deze functie wordt gebruikt om de grootte van de string terug te geven
capaciteit() Deze functie retourneert de capaciteit die door de compiler aan de string is toegewezen
formaat wijzigen() Met deze functie kunnen we de tekenreeksgrootte vergroten of verkleinen
krimpen_tot_fit() Deze functie verlaagt de capaciteit en maakt deze gelijk aan het minimum.

Voorbeeld:

C++




#include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> > >// length function is used to print the length of the string> >cout <<>'The length of the string is '> << s.length() << endl;> > >// capacity function is used to print the capacity of the string> >cout <<>'The capacity of string is '> << s.capacity()<< endl;> > >// the string.resize() function is used to resize the string to 10 characters> >s.resize(10);> > >cout <<>'The string after using resize function is '> << s << endl;> > >s.resize(20);> > >cout <<>'The capacity of string before using shrink_to_fit function is '><< s.capacity() << endl;> > >// shrink to fit function is used to reduce the capacity of the container> >s.shrink_to_fit();> >cout <<>'The capacity of string after using shrink_to_fit function is '><< s.capacity() << endl;> >return> 0;> }>

>

>

Uitvoer

The length of the string is 13 The capacity of string is 15 The string after using resize function is GeeksforGe The capacity of string before using shrink_to_fit function is 30 The capacity of string...>

Concluderend legt dit artikel uit hoe strings in C++ kunnen worden getrotseerd met behulp van karakterarrays en stringklassen. De stringklasse biedt meer geavanceerde functies, terwijl de karakterarray basisfuncties biedt, maar efficiënt en gemakkelijk te gebruiken is. In dit artikel hebben we ook de verschillende methoden besproken om input van de gebruiker te verkrijgen.

Raadpleeg het artikel voor meer informatie over de std::string-klasse: std::string-klasse in C++