C++ StrÀngfunktion: strcpy(), strcat(), strlen(), strcmp()

⚡ Smart sammanfattning

C++ StrÀngfunktioner som strcpy, strcat, strlen och strcmp låter program kopiera, sammanfoga, mÀta och jÀmföra text. Den hÀr resursen förklarar vad en strÀng Àr, hur man deklarerar strÀngar i C-stil och std::string, får åtkomst till deras vÀrden och tillÀmpar centrala strÀngfunktioner med exempel.

  • 🔀 KÀrndefinition: En strÀng Àr en sekvens av tecken; en C++ string Àr ett objekt i klassen std::string.
  • 🧱 TvÃ¥ deklarationer: C++ stöder teckenuppsÀttningar i C-stil som avslutas med '\0' och den sÀkrare klasstypen std::string.
  • 📥 Åtkomst till vÀrden: StrÀngar lÀses och skrivs ut med namn, vilket demonstreras med bÃ¥de char-arrayer och std::string.
  • 🛠 StrÀngfunktioner: strcpy kopierar, strcat sammanfogar, strlen mÀter lÀngd och strcmp jÀmför tvÃ¥ strÀngar.
  • 📊 Rubrik krÀvs: C-strÀngfunktionerna finns i cstring-headern, som mÃ¥ste inkluderas före anvÀndning.

C++ StrÀngfunktioner

Vad Àr en strÀng?

En strÀng Àr en sekvens av tecken. A C++ string Àr ett objekt i klassen std::string. Tecknen lagras som sekvenser av byte, med åtkomst till en enda teckenbyte tillåten.

C++ StrÀngar allokerar minne dynamiskt. Mer minne kan allokeras till strÀngen under körning om det behövs. Eftersom det inte sker någon förallokering av minne, finns det inget slöseri med minne. Vi kan utföra olika operationer på strÀngar, inklusive jÀmförelse, sammankoppling, konvertering etc.

Deklarerande strÀngar

C++ stöder två typer av strÀngdeklarationer:

  • C-stil teckenstrÀng
  • StrÀngklasstyp

C-stil teckenstrÀng

Denna typ av strÀngdeklaration introducerades i C programmeringsspråk. C++ fortsÀtter att stödja det. Det Àr helt enkelt en endimensionell matris av tecken som avslutas med ett nulltecken (\0). En null-avslutad strÀng har de tecken som utgör strÀngen följt av ett nulltecken.

TÀnk på strÀngdeklarationen nedan:

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

Ovanstående deklaration skapar en strÀng som bildar ordet John. Ordet har 4 tecken, men strÀngen har en storlek på 5. Det extra mellanslaget gör att det finns plats för null-tecknet.

Med hjÀlp av arrayinitieringsregeln kan vi skriva ovanstående uttalande enligt följande:

char name[] = "John";

Observera att du inte behöver placera null-tecknet i slutet av strÀngkonstanten. C++ kompilatorn kommer automatiskt att placera '\0' vid strÀngens Ànde nÀr arrayen initieras.

std :: string

Standarden C++ Biblioteket tillhandahåller strÀngklassen, som stöder olika strÀngoperationer. Den skrivs som std::string.

För att anvÀnda den hÀr klassen måste vi först inkludera den i vår arbetsyta med hjÀlp av #include-förprocessorn enligt nedan:

#include <string>

DÀrefter kan vi deklarera vår strÀng med nyckelordet strÀng. Till exempel:

string name = "John";

Ovanstående uttalande kommer att skapa en strÀng med namnet namn som innehåller vÀrdet John.

Åtkomst till strÀngvÀrden

In C++, kan vi komma åt strÀngvÀrdena med hjÀlp av strÀngnamnet. Till exempel:

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

Produktion:

Åtkomst till strÀngvÀrden

HÀr Àr en skÀrmdump av koden:

Åtkomst till strÀngvÀrden

Code Förklaring:

  1. Inklusive iostream-huvudfilen i vår kod. Det gör att vi kan lÀsa från och skriva till konsolen.
  2. Inkluderar std-namnområdet för att anvÀnda dess klasser och funktioner utan att anropa det.
  3. Anropar main()-funktionen i vilken programmets logik ska lÀggas till. { markerar början på main()-funktionens brödtext.
  4. Deklarerar en teckenstrÀng och ger den namnet. StrÀngen kommer att lagra vÀrdet John. Det extra utrymmet lagrar null-tecknet.
  5. Skriver ut lite text på konsolen.
  6. Skriver ut vÀrdet på strÀngen med namnet namn på konsolen.
  7. Funktionen main() bör returnera ett vÀrde om programmet fungerar bra.
  8. Slutet på huvuddelen av funktionen main().

HÀr Àr ett annat exempel med hjÀlp av C++ standard strÀngklass:

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

	string name = "Guru99";

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

	return 0;
}

Produktion:

Åtkomst till strÀngvÀrden

HÀr Àr en skÀrmdump av koden:

Åtkomst till strÀngvÀrden

Code Förklaring:

  1. Inklusive iostream-huvudfilen i vår kod. Det gör att vi kan lÀsa från och skriva till konsolen.
  2. Inkluderar standardstrÀngklassen i vår kod.
  3. Inkluderar std-namnområdet för att anvÀnda dess klasser och funktioner utan att anropa det.
  4. Anropar main()-funktionen i vilken programmets logik ska lÀggas till. { markerar början på main()-funktionens brödtext.
  5. Deklarera en strÀng och ge den namnet namn. StrÀngen lagrar vÀrdet Guru99.
  6. Skriver ut vÀrdet på strÀngnamnet tillsammans med lite text på konsolen.
  7. Funktionen main() bör returnera ett vÀrde om programmet fungerar bra.
  8. Slutet på huvuddelen av funktionen main().

StrÀngfunktioner i C++

Du kommer ofta att vilja manipulera strÀngar. C++ erbjuder ett brett utbud av funktioner som du kan anvÀnda för detta. Dessa funktioner definieras i header, så vi måste inkludera den i vår kod för att kunna anvÀnda funktionerna. Låt oss diskutera några:

strcpy()

Detta Àr strÀngkopieringsfunktionen. Den kopierar en strÀng till en annan strÀng.

Syntax:

strcpy(string1, string2);

Funktionens två parametrar, strÀng1 och strÀng2, Àr strÀngar. Funktionen kommer att kopiera strÀngen strÀng2 till strÀng1.

strcat()

Detta Àr strÀngsammansÀttningsfunktionen. Det sammanfogar strÀngar.

Syntax:

strcat(string1, string2);

De två parametrarna till funktionen, strÀng1 och strÀng2, Àr de strÀngar som ska sammanfogas. Ovanstående funktion kommer att sammanfoga strÀngen strÀng2 med slutet av strÀngen strÀng1.

strlen()

Detta Àr strÀnglÀngdsfunktionen. Den returnerar lÀngden på strÀngen som skickas till den som argument.

Syntax:

strlen(string1);

Parametern string1 Àr namnet på strÀngen vars lÀngd ska bestÀmmas. Ovanstående funktion returnerar lÀngden på strÀngen strÀng1.

strcmp ()

Det hÀr Àr strÀngjÀmförningsfunktionen. Den anvÀnds för strÀngjÀmförelse.

Syntax:

strcmp(string1, string2);

Funktionen ovan returnerar 0 om strÀngarna strÀng1 och strÀng2 Àr lika, mindre Àn 0 om strÀng1 < strÀng2 och större Àn 0 om strÀng1 > strÀng2.

Exempel:

Följande exempel visar hur man anvÀnder ovanstående strÀngfunktioner:

#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;
}

Produktion:

StrÀngfunktioner i C++

HÀr Àr en skÀrmdump av koden:

StrÀngfunktioner i C++

Code Förklaring:

  1. Inklusive iostream-huvudfilen i vår kod. Det gör att vi kan lÀsa från och skriva till konsolen.
  2. Inklusive standarden headern i vår kod.
  3. Inkluderar std-namnområdet för att anvÀnda dess klasser och funktioner utan att anropa det.
  4. Anropar main()-funktionen i vilken programmets logik ska lÀggas till. { markerar början på main()-funktionens brödtext.
  5. Deklarera en strÀng på 10 tecken och ge den namnet namn1. StrÀngen kommer att lagra vÀrdet Guru99.
  6. Deklarerar en strÀng på 10 tecken och ger den namnet name2. StrÀngen kommer att lagra vÀrdet John.
  7. Deklarera en strÀng på 10 tecken och ge den namnet name3.
  8. Deklarerar en heltalsvariabel heter len.
  9. Kopiera strÀngnamn1 till strÀngnamn3.
  10. Skriver ut vÀrdet för strÀngen name3 tillsammans med lite text i konsolen. Det borde skrivas ut Guru99.
  11. Sammanfogar strÀngen namn2 med slutet av strÀngen namn1. VÀrdet för namn1 Àr nu Guru99 Johannes.
  12. Skriver ut vÀrdet för strÀngen name1 tillsammans med lite text i konsolen. Det borde skrivas ut Guru99 Johannes.
  13. BestÀmma lÀngden på strÀngen med namnet namn1 och tilldela lÀngdens vÀrde till variabeln len.
  14. Skriver ut vÀrdet på variabeln len tillsammans med annan text i konsolen.
  15. Funktionen main() bör returnera ett vÀrde om programmet fungerar bra.
  16. Slutet på huvuddelen av funktionen main().

Vanliga frågor

Ja. AI-assistenter kan omstrukturera teckenuppsÀttningar till std::string, uppdatera relaterade funktioner och förklara sÀkerhetsfördelarna. Utvecklare bör fortfarande granska Àndringarna för kantfall, buffertstorlekar och avsett beteende.

Ja. AI-verktyg genererar fungerande exempel, förklarar hur strcpy och strcat beter sig och flaggar risker för buffertöverflöde. Detta påskyndar förståelsen, men att köra koden sjÀlv Àr fortfarande det bÀsta sÀttet att bekrÀfta beteendet.

std::string hanterar minne dynamiskt och tillhandahåller inbyggda operationer som sammanfogning och jÀmförelse. C-liknande strÀngar Àr fasta teckenuppsÀttningar som avslutas med '\0' och som krÀver manuell minneshantering och Àr mer felbenÀgna.

De kan orsaka buffertöverflöden om destinationsmatrisen Àr för liten. SÀkrare alternativ inkluderar strncpy, strncat eller att helt enkelt anvÀnda std::string-operationer, som hanterar minne automatiskt och minskar dessa risker.

Sammanfatta detta inlÀgg med: