C++ Stringfunktion: strcpy(), strcat(), strlen(), strcmp()

⚡ Smart opsummering

C++ Strengfunktioner som strcpy, strcat, strlen og strcmp lader programmer kopiere, sammenføje, måle og sammenligne tekst. Denne ressource forklarer, hvad en streng er, hvordan man deklarerer strenge i C-stil og std::string, får adgang til deres værdier og anvender centrale strengfunktioner med eksempler.

  • 🔤 Kernedefinition: En streng er en sekvens af tegn; en C++ streng er et objekt i std::string-klassen.
  • 🧱 To erklæringer: C++ understøtter C-lignende tegnarrays afsluttet med '\0' og den sikrere klassetype std::string.
  • 📥 Adgang til værdier: Strenge læses og udskrives efter navn, demonstreret med både char arrays og std::string.
  • 🛠️ Strengfunktioner: strcpy kopierer, strcat sammenkæder, strlen måler længde, og strcmp sammenligner to strenge.
  • 📦 Overskrift påkrævet: C-strengfunktionerne findes i cstring-headeren, som skal inkluderes før brug.

C++ Strengfunktioner

Hvad er en streng?

En streng er en sekvens af tegn. EN C++ `string` er et objekt i std::string-klassen. Tegnene gemmes som sekvenser af bytes, med adgang til en enkelt tegnbyte tilladt.

C++ Strenge allokerer hukommelse dynamisk. Mere hukommelse kan allokeres til strengen under kørselstid, hvis det er nødvendigt. Da der ikke er nogen forudgående hukommelsesallokering, er der intet spild af hukommelse. Vi kan udføre forskellige operationer på strenge, herunder sammenligning, sammenkædning, konvertering osv.

Erklærer strenge

C++ understøtter to typer strengdeklarationer:

  • C-stil tegnstreng
  • String klasse type

C-stil karakterstreng

Denne type strengdeklaration blev introduceret i C programmeringssprog. C++ fortsætter med at understøtte det. Det er simpelthen et endimensionelt array af tegn afsluttet med et null-tegn (\0). En streng afsluttet med null har de tegn, der udgør strengen, efterfulgt af et null-tegn.

Overvej strengerklæringen nedenfor:

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

Ovenstående deklaration opretter en streng, der danner ordet John. Ordet har 4 tegn, men strengen har en størrelse på 5. Det ekstra mellemrum giver plads til at indeholde null-tegnet.

Ved at bruge array-initialiseringsreglen kan vi skrive ovenstående sætning som følger:

char name[] = "John";

Bemærk at du ikke behøver at placere null-tegnet i slutningen af ​​strengkonstanten. C++ compiler vil automatisk placere '\0' ved strengens ende, når arrayet initialiseres.

std::streng

Standarden C++ Biblioteket leverer strengklassen, som understøtter forskellige strengoperationer. Den er skrevet som std::string.

For at bruge denne klasse skal vi først inkludere den i vores arbejdsområde ved hjælp af #include præprocessoren som vist nedenfor:

#include <string>

Dernæst kan vi erklære vores streng ved hjælp af streng nøgleordet. For eksempel:

string name = "John";

Ovenstående sætning vil oprette en streng med navnet navn, der indeholder værdien John.

Adgang til strengværdier

In C++, kan vi få adgang til strengværdierne ved hjælp af strengnavnet. For eksempel:

#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:

Adgang til strengværdier

Her er et skærmbillede af koden:

Adgang til strengværdier

Code Forklaring:

  1. Inklusive iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
  3. Kalder main()-funktionen, inden for hvilken programmets logik skal tilføjes. { markerer starten på main()-funktionens brødtekst.
  4. Erklærer en streng af tegn og giver den navnet navn. Strengen vil gemme værdien John. Det ekstra mellemrum gemmer null-tegnet.
  5. Udskriver noget tekst på konsollen.
  6. Udskrivning af værdien af ​​strengnavnet på konsollen.
  7. Main()-funktionen skal returnere en værdi, hvis programmet kører fint.
  8. Slutningen af ​​hoveddelen af ​​funktionen main().

Her er et andet eksempel ved hjælp af C++ standard streng klasse:

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

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

Output:

Adgang til strengværdier

Her er et skærmbillede af koden:

Adgang til strengværdier

Code Forklaring:

  1. Inklusive iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderer standard strengklassen i vores kode.
  3. Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
  4. Kalder main()-funktionen, inden for hvilken programmets logik skal tilføjes. { markerer starten på main()-funktionens brødtekst.
  5. Deklarerer en streng og giver den navnet navn. Strengen gemmer værdien Guru99.
  6. Udskrivning af værdien af ​​strengnavnet sammen med noget tekst på konsollen.
  7. Main()-funktionen skal returnere en værdi, hvis programmet kører fint.
  8. Slutningen af ​​hoveddelen af ​​funktionen main().

Stringfunktioner i C++

Du vil ofte ønske at manipulere strenge. C++ tilbyder en bred vifte af funktioner, som du kan bruge til dette. Disse funktioner er defineret i header, så vi skal inkludere den i vores kode for at kunne bruge funktionerne. Lad os diskutere nogle:

strcpy()

Dette er strengkopieringsfunktionen. Den kopierer en streng til en anden streng.

Syntaks:

strcpy(string1, string2);

Funktionens to parametre, streng1 og streng2, er strenge. Funktionen kopierer strengen streng2 til streng1.

strcat()

Dette er strengsammenkædningsfunktionen. Det sammenkæder strenge.

Syntaks:

strcat(string1, string2);

Funktionens to parametre, streng1 og streng2, er de strenge, der skal sammenkædes. Ovenstående funktion vil sammenkæde strengen streng2 med slutningen af ​​strengen streng1.

strlen()

Dette er strenglængdefunktionen. Den returnerer længden af ​​den streng, der er sendt til den som argument.

Syntaks:

strlen(string1);

Parameteren string1 er navnet på den streng, hvis længde skal bestemmes. Ovenstående funktion returnerer længden af ​​strengen streng1.

strcmp()

Dette er funktionen til sammenligning af strenge. Det bruges til strengsammenligning.

Syntaks:

strcmp(string1, string2);

Ovenstående funktion returnerer 0, hvis strengene streng1 og streng2 er ens, mindre end 0, hvis streng1 < streng2, og større end 0, hvis streng1 > streng2.

Eksempel:

Følgende eksempel viser, hvordan man bruger ovenstående strengfunktioner:

#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:

Stringfunktioner i C++

Her er et skærmbillede af koden:

Stringfunktioner i C++

Code Forklaring:

  1. Inklusive iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inklusive standarden headeren i vores kode.
  3. Inkluderer std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
  4. Kalder main()-funktionen, inden for hvilken programmets logik skal tilføjes. { markerer starten på main()-funktionens brødtekst.
  5. Deklarerer en streng på 10 tegn og giver den navnet navn1. Strengen gemmer værdien Guru99.
  6. Erklærer en streng på 10 tegn og giver den navnet name2. Strengen vil gemme værdien John.
  7. Erklærer en streng på 10 tegn og giver den navnet navn3.
  8. Erklærer en heltalsvariabel hedder len.
  9. Kopiering af strengnavn1 til strengnavn3.
  10. Udskriver værdien af ​​strengen name3 sammen med tekst i konsollen. Det burde udskrive Guru99.
  11. Sammenkædning af strengen navn2 til slutningen af ​​strengen navn1. Værdien af ​​navn1 er nu Guru99 Johannes.
  12. Udskriver værdien af ​​strengen name1 sammen med tekst i konsollen. Det burde udskrive Guru99 Johannes.
  13. Bestemmelse af længden af ​​strengen med navnet navn1 og tildeling af værdien af ​​længden til variablen len.
  14. Udskriver værdien af ​​len-variablen sammen med anden tekst i konsollen.
  15. Main()-funktionen skal returnere en værdi, hvis programmet kører fint.
  16. Slutningen af ​​hoveddelen af ​​funktionen main().

Ofte Stillede Spørgsmål

Ja. AI-assistenter kan omstrukturere char arrays til std::string, opdatere relaterede funktioner og forklare sikkerhedsfordelene. Udviklere bør stadig gennemgå ændringerne for edge cases, bufferstørrelser og tilsigtet adfærd.

Ja. AI-værktøjer genererer eksempler, forklarer hvordan strcpy og strcat opfører sig, og markerer risici for bufferoverløb. Dette fremskynder forståelsen, men selv at køre koden er stadig den bedste måde at bekræfte adfærd på.

std::string administrerer hukommelse dynamisk og tilbyder indbyggede operationer som sammenkædning og sammenligning. C-stilstrenge er faste tegnarrays afsluttet med '\0', der kræver manuel hukommelseshåndtering og er mere fejlbehæftede.

De kan forårsage bufferoverløb, hvis destinationsarrayet er for lille. Sikrere alternativer inkluderer strncpy, strncat eller blot brug af std::string-operationer, som administrerer hukommelse automatisk og reducerer disse risici.

Opsummer dette indlæg med: