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.

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:
Här är en skärmdump av koden:
Code Förklaring:
- Inklusive iostream-huvudfilen i vår kod. Det gör att vi kan läsa från och skriva till konsolen.
- Inkluderar std-namnområdet för att använda dess klasser och funktioner utan att anropa det.
- Anropar main()-funktionen i vilken programmets logik ska läggas till. { markerar början på main()-funktionens brödtext.
- Deklarerar en teckensträng och ger den namnet. Strängen kommer att lagra värdet John. Det extra utrymmet lagrar null-tecknet.
- Skriver ut lite text på konsolen.
- Skriver ut värdet på strängen med namnet namn på konsolen.
- Funktionen main() bör returnera ett värde om programmet fungerar bra.
- 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:
Här är en skärmdump av koden:
Code Förklaring:
- Inklusive iostream-huvudfilen i vår kod. Det gör att vi kan läsa från och skriva till konsolen.
- Inkluderar standardsträngklassen i vår kod.
- Inkluderar std-namnområdet för att använda dess klasser och funktioner utan att anropa det.
- Anropar main()-funktionen i vilken programmets logik ska läggas till. { markerar början på main()-funktionens brödtext.
- Deklarera en sträng och ge den namnet namn. Strängen lagrar värdet Guru99.
- Skriver ut värdet på strängnamnet tillsammans med lite text på konsolen.
- Funktionen main() bör returnera ett värde om programmet fungerar bra.
- 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:
Här är en skärmdump av koden:
Code Förklaring:
- Inklusive iostream-huvudfilen i vår kod. Det gör att vi kan läsa från och skriva till konsolen.
- Inklusive standarden headern i vår kod.
- Inkluderar std-namnområdet för att använda dess klasser och funktioner utan att anropa det.
- Anropar main()-funktionen i vilken programmets logik ska läggas till. { markerar början på main()-funktionens brödtext.
- Deklarera en sträng på 10 tecken och ge den namnet namn1. Strängen kommer att lagra värdet Guru99.
- Deklarerar en sträng på 10 tecken och ger den namnet name2. Strängen kommer att lagra värdet John.
- Deklarera en sträng på 10 tecken och ge den namnet name3.
- Deklarerar en heltalsvariabel heter len.
- Kopiera strängnamn1 till strängnamn3.
- Skriver ut värdet för strängen name3 tillsammans med lite text i konsolen. Det borde skrivas ut Guru99.
- Sammanfogar strängen namn2 med slutet av strängen namn1. Värdet för namn1 är nu Guru99 Johannes.
- Skriver ut värdet för strängen name1 tillsammans med lite text i konsolen. Det borde skrivas ut Guru99 Johannes.
- Bestämma längden på strängen med namnet namn1 och tilldela längdens värde till variabeln len.
- Skriver ut värdet på variabeln len tillsammans med annan text i konsolen.
- Funktionen main() bör returnera ett värde om programmet fungerar bra.
- Slutet på huvuddelen av funktionen main().




