strings c with examples
En intensiv titt på grunderna i strängar i C ++.
I denna C ++ -serie har vi hittills mest diskuterat numeriska matriser i C ++. I denna handledning kommer vi att diskutera manipulationen med karaktärsuppsättningar som vi helt enkelt kallar ”Strängar”.
Teckenuppsättning är mestadels en C-stilsträng som C ++ stöder. Förutom C-stil karaktärsuppsättningar stöder C ++ också en strängklass “std :: string”. Vidare, i denna handledning, kommer vi att diskutera både typer av strängar samt skillnaden mellan dem och om programmering av varje typ i C ++.
=> Se upp den kompletta listan över C ++ -handledning i denna serie.
Vad du kommer att lära dig:
Character Arrays (C-style strings)
Strängen i c-stil är en karaktärsuppsättning som avslutas med ett nulltecken ' 0'. Därför kan vi definiera en matris av typ char och dimensionerna eller storleken på matriserna och sedan kan vi initialisera den till en sträng eller matris med tecken.
Observera att det är kompilatorn som avslutar en sträng med ett null-tecken, så om vi initialiserar teckenuppsättningen med en sträng (i det dubbla citatet '') måste vi lämna extra utrymme för null-teckenet medan vi förklarar storleken på en matris .
Låt oss ta några exempel på att förklara och initialisera teckenuppsättningar.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Alla ovanstående definitioner är giltiga C-stilsträngdefinitioner i C ++. Observera att vi antingen kan deklarera den faktiska storleken eller så kan vi lämna storleken tom så att kompilatorn kan rymma storleken beroende på strängen som vi initierade.
Låt oss ta upp en Exempel för att läsa och skriva karaktärsarray i C ++
Nedan finns ett enkelt program som läser strängen med cin och matar ut den med cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Utgång 1:
SoftwareTestingHelp.com
du angav: SoftwareTestingHelp.com
Utgång 2:
Detta är en C-stilsträng
du angav: detta
Om vi jämför båda utdata ser vi att när vi gick in i den första strängen ”SoftwareTestingHelp.com” så skrevs den ut som den är.
Men i den andra utgången, även om vi angav strängen som 'Detta är C-stilsträng', var utgången bara 'Detta'.
Skillnaden i utdata beror på att ”>>” -operatören för cin som används för att läsa strängen behandlas som en “scanf” -funktion av C, som bara läser tills utrymmet påträffas. Därför är 'cin med >>' lämplig för att läsa karaktärsuppsättningar utan utrymme.
hur man skriver fall med regressionstest
Så medan det andra utrymmet påträffades tog cin-funktionen det som slutet på strängen och läste bara det första ordet.
För att läsa en hel rad tecken inklusive mellanslag använder C ++ funktionen 'get'.
Ett exempel på program som använder get-funktionen visas nedan:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Produktion:
Detta är softwareTestinghelp.com
du gick med: Detta är softwareTestinghelp.com
Som visas i exemplet använder get-funktionen av cin två argument. Det första argumentet är teckensatsvariabeln där strängen ska läsas medan det andra argumentet är den maximala storleken på matrisen.
Strängar i C-stil stöder också många strängfunktioner som gör att användarna kan manipulera strängarna. Dessa funktioner definieras i rubriken 'cstring'.
Vi presenterar en tabell nedan som listar olika strängfunktioner som kan användas för att manipulera strängar i C-stil.
Låt bli Fungera Argument Beskrivning 1 strcpy s1, s2 Kopierar sträng s2 till sträng s1 två strcat s1, s2 Lägger till eller sammanfogar sträng s2 till slutet av sträng s1 3 strlen s1 Returnerar längden på strängen s1 4 strcmp s1, s2 Returnerar 0: s1 och s2 är desamma
<0:s1 > 0: s1> s2 5 strchr s1, kap Returnerar en pekare till första förekomst av tecken ch i sträng s1och strängen därifrån och framåt 6 strstr s1, s2 Returnerar första förekomst av sträng s2 i sträng s1
Följande program visar användningen av några av dessa funktioner i C ++:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Produktion:
Första längdens längd: 31
Resulterande sträng (secStr): softwareTesting
Jämföra firstStr och secStr: -31
Sammankopplad secStr: programvarutestning för dig
Första förekomsten av i i första str på: s är softwareTestingHelp.com
Strängklass i C ++
Sträng i C ++ som definieras av klassen “std :: string” är en representation av teckenflödet i ett objekt. Med andra ord är strängklassen en samling strängobjekt. Denna strängklass är en del av std-namnområdet och definieras i rubriken 'string.h'.
Låt oss diskutera några av de grundläggande skillnaderna mellan strängklass och teckenuppsättning.
- Medan karaktärsuppsättningarna vi diskuterade ovan allokeras statiskt under kompileringstiden är strängar objekt och kan alltså dynamiskt allokeras.
- Eftersom karaktärsarrangemang är statiska till sin natur kan de inte krympas eller expanderas när de har definierats. Därför, om vi har en teckenuppsättning av storlek 100, och jag initialiserade den till ordet 'Hej', så är det återstående utrymmet bortkastat.
Char mystr (100) = “Hej”;
Här är de återstående 95 platserna bortkastade.
I motsats till detta är strängobjekt dynamiska till sin natur och tar upp det exakta utrymmet för värdet.
- Teckenuppsättningar har snabbare prestanda medan strängar är långsammare.
- Teckenuppsättningar har få funktioner som fungerar på dem som kan manipulera dem. Strängklassen har många funktioner inklusive iteratorfunktionerna.
Det här är några av de grundläggande skillnaderna mellan teckenmatrisen och strängobjektklassen.
Därefter ser vi några exempel på strängklass tillsammans med några grundläggande operationer som utförs på objekt av strängklassen.
Ett exempel för att deklarera och initialisera strängklassen.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<I exemplet ovan har vi deklarerat och initialiserat ett strängobjekt med hjälp av klassen “string”. Detta är ett enkelt exempel. Låt oss nu ha ett program för att läsa strängen från användaren och också visa några strängfunktioner inklusive hitta längden och jämföra två strängar.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Produktion:
Mata in strängen
SoftwareTestingHjälp
Den angivna strängen är: SoftwareTestingHelp
Längden på strängsträngen är: 19
Två strängar är lika
Ny str1: SoftwareTestingHelp.com
str ny längd: 0
I ovanstående illustration har vi använt många strängfunktioner för att manipulera strängarna. Efter att ha förklarat strängen använder vi strängklassens 'getline' -funktion för att läsa strängen från standardingången.
När vi väl läst strängen hittar vi dess längd med hjälp av 'längd' -funktionen. Om vi behöver jämföra två strängar för att utvärdera om de är lika eller inte kan vi använda funktionen 'jämför' för strängklassen. Om funktionen returnerar 0 är de två strängarna lika, annars returnerar funktionen ett värde som inte är noll.
Ännu en funktion är att lägga till en annan sträng i slutet av den befintliga strängen. Detta är funktionen 'lägg till'. I det här exemplet lägger vi till '.com' till den redan existerande strängen str1 med värdet 'softwaretesting'.
Den sista funktionen i exemplet är den tydliga funktionen som används för att rensa innehållet i det anropande strängobjektet. I det här exemplet rensar vi innehållet i str-objektet så att dess längd blir 0.
Slutsats
I denna handledning har vi täckt karaktärsuppsättningen som också kallas C-stilsträngar tillsammans med grunderna i strängklassen. Strängklass kommer med fler verktyg som iteratorklass eftersom det är en containerklass.
Vi kommer att se mer om strängklass och dess funktioner i våra kommande STL-tutorials !!
=> Besök här för att se C ++ träningsserien för alla.
Rekommenderad läsning
- Skalsortering i C ++ med exempel
- Funktioner för datum och tid i C ++ med exempel
- Java String med String Buffer och String Builder Tutorial
- Urvalssortering i C ++ med exempel
- Python-strängfunktioner
- Python DateTime-handledning med exempel
- Klipp kommandot i Unix med exempel
- 70+ BEST C ++ självstudier för att lära dig C ++ programmering GRATIS