C++ Tekenreeksfunctie: strcpy(), strcat(), strlen(), strcmp() Voorbeeld

Wat is een tekenreeks?

Een string is een reeks karakters. A C++ string is een object van de klasse std::string. De karakters zijn opgeslagen reeksen bytes waarbij toegang tot één karakterbyte is toegestaan.

C++ strings wijzen dynamisch geheugen toe. Indien nodig kan er tijdens runtime meer geheugen aan de string worden toegewezen. Omdat er geen geheugen vooraf wordt toegewezen, is er geen verspilling van geheugen. We kunnen verschillende bewerkingen op strings uitvoeren, waaronder vergelijkingen, concatenatie, conversie, etc.

Tekenreeksen declareren

C++ ondersteunt twee soorten stringdeclaraties:

  • Tekenreeks in C-stijl
  • Tekenreeksklassetype

Tekenreeks in C-stijl

Dit type stringdeclaratie is geïntroduceerd in C programmeertaal. C++ blijft het steunen. Het is eenvoudigweg een eendimensionale reeks tekens die worden afgesloten met een nulteken (\0). Een op null eindigende string bevat tekens waaruit de string bestaat, gevolgd door een null.

Beschouw de onderstaande stringdeclaratie:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

De bovenstaande declaratie creëert een string die het woord John vormt. Het woord heeft 4 tekens, maar de string heeft een grootte van 5. Door de extra ruimte kan het nulteken worden vastgehouden.

Met behulp van de array-initialisatieregel kunnen we de bovenstaande verklaring als volgt schrijven:

char name[] = "John";

Houd er rekening mee dat u het null-teken niet aan het einde van de tekenreeksconstante hoeft te plaatsen. De C++ compiler plaatst automatisch de '\0' aan het einde van de string bij het initialiseren van de array.

std::tekenreeks

De standaard C++ bibliotheek biedt de stringklasse die verschillende stringbewerkingen ondersteunt. Het wordt geschreven als std::string.

Om deze klasse te gebruiken, moeten we deze eerst in onze werkruimte opnemen met behulp van de #include preprocessor, zoals hieronder weergegeven:

#include<string>

Vervolgens kunnen we onze string declareren met het trefwoord string. Bijvoorbeeld:

string name = "John";

De bovenstaande instructie creëert een tekenreeks met de naam naam die de waarde John bevat.

Toegang tot tekenreekswaarden

In C++, hebben we toegang tot de tekenreekswaarden met behulp van de tekenreeksnaam. Bijvoorbeeld:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

Output:

Toegang tot tekenreekswaarden

Hier is een screenshot van de code:

Toegang tot tekenreekswaarden

Code Verklaring:

  1. Inclusief het iostream headerbestand in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
  2. Inclusief de std-naamruimte om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
  3. Het aanroepen van de functie main() waarbinnen de logica van het programma moet worden toegevoegd. De { markeert het begin van de hoofdtekst van de functie main().
  4. Een reeks tekens declareren en deze de naam geven. De string slaat de waarde John op. In de extra ruimte wordt het nulteken opgeslagen.
  5. Tekst afdrukken op de console.
  6. Afdrukken van de waarde van de tekenreeks met de naam naam op de console.
  7. De functie main() zou een waarde moeten retourneren als het programma goed werkt.
  8. Einde van de hoofdtekst van de functie main().

Hier is nog een voorbeeld waarbij gebruik wordt gemaakt van de C++ standaard snaarklasse:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

Output:

Toegang tot tekenreekswaarden

Hier is een screenshot van de code:

Toegang tot tekenreekswaarden

Code Verklaring:

  1. Inclusief het iostream headerbestand in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
  2. Inclusief de standaard stringklasse in onze code.
  3. Inclusief de std-naamruimte om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
  4. Het aanroepen van de functie main() waarbinnen de logica van het programma moet worden toegevoegd. De { markeert het begin van de hoofdtekst van de functie main().
  5. Een string declareren en deze de naam naam geven. De string slaat de waarde Guru99 op.
  6. Het afdrukken van de waarde van de tekenreeksnaam naast wat tekst op de console.
  7. De functie main() zou een waarde moeten retourneren als het programma goed werkt.
  8. Einde van de hoofdtekst van de functie main().

Tekenreeksfuncties in C++

Je zult vaak snaren willen manipuleren. C++ biedt een breed scala aan functies die u hiervoor kunt gebruiken. Deze functies zijn gedefinieerd in de klasse CString, daarom moeten we deze in onze code opnemen om de functies te kunnen gebruiken. Laten we er een paar bespreken:

strcpy()

Dit is de tekenreekskopieerfunctie. Het kopieert de ene string naar een andere string.

Syntax:

strcpy(string1, string2);

De twee parameters van de functie, string1 en string2, zijn strings. De functie kopieert de string string2 naar string1.

streng()

Dit is de tekenreeksaaneenschakelingsfunctie. Het voegt strings samen.

Syntax:

strcat(string1, string2);

De twee parameters voor de functie, string1 en string2, zijn de strings die moeten worden samengevoegd. De bovenstaande functie voegt de string string2 samen aan het einde van de string string1.

strlen()

Dit is de tekenreekslengtefunctie. Het retourneert de lengte van de string die als argument wordt doorgegeven.

Syntax:

strnlen(string1)

De parameter string1 is de naam van de string waarvan de lengte moet worden bepaald. De bovenstaande functie retourneert de lengte van de string string1.

strcmp()

Dit is de tekenreeksvergelijkingsfunctie. Het wordt gebruikt voor stringvergelijking.

Syntax:

strcmp(string1, string2);

De bovenstaande functie retourneert 0 als strings string1 en string2 vergelijkbaar zijn, minder dan 0 als string1 tekenreeks2.

Voorbeeld:

Het volgende voorbeeld laat zien hoe u de bovenstaande tekenreeksfuncties kunt gebruiken:

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int  len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

Output:

Tekenreeksfuncties in C++

Hier is een screenshot van de code:

Tekenreeksfuncties in C++

Code Verklaring:

  1. Inclusief het iostream headerbestand in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
  2. Inclusief de standaard CString-klasse in onze code.
  3. Inclusief de std-naamruimte om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
  4. Het aanroepen van de functie main() waarbinnen de logica van het programma moet worden toegevoegd. De { markeert het begin van de hoofdtekst van de functie main().
  5. Een reeks van 10 tekens declareren en deze de naam name1 geven. De string slaat de waarde Guru99 op.
  6. Een reeks van 10 tekens declareren en deze de naam name2 geven. De string slaat de waarde John op.
  7. Een reeks van 10 tekens declareren en deze de naam name3 geven.
  8. Het verklaren van een gehele variabele genaamd len.
  9. De tekenreeksnaam1 kopiëren naar de tekenreeksnaam3.
  10. Het afdrukken van de waarde van de tekenreeks naam1 naast wat tekst op de console. Het zou Guru99 moeten afdrukken.
  11. Het aaneenschakelen van de tekenreeks naam2 aan het einde van tekenreeks naam1. De waarde van naam1 is nu Guru99John.
  12. Het afdrukken van de waarde van de tekenreeks naam1 naast wat tekst op de console. Het zou Guru99John moeten afdrukken
  13. Het bepalen van de lengte van de string met de naam naam1 en het toewijzen van de waarde van lengte aan de variabele len.
  14. Afdrukken van de waarde van de len-variabele samen met andere tekst op de console.
  15. De functie main() zou een waarde moeten retourneren als het programma goed werkt.
  16. Einde van de hoofdtekst van de functie main().

Samenvatting

  • Een string is een reeks karakters.
  • Strings behoren tot de standaard stringklasse in C++.
  • We kunnen strings declareren met behulp van de tekenreeks in C-stijl of de standaard tekenreeksklasse.
  • De functie strcpy() kopieert de ene string naar de andere.
  • De functie strcat() koppelt twee strings aan elkaar.
  • De functie strlen() retourneert de lengte van een tekenreeks.
  • De strcmp()-functie vergelijkt twee strings.