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: