logo

Strenger i C++

C++-strenger er sekvenser av tegn lagret i en char-array. Strenger brukes til å lagre ord og tekst. De brukes også til å lagre data, for eksempel tall og annen type informasjon. Strenger i C++ kan defineres enten ved å bruke std::string klasse eller C-stil karakterarrayer.

Strenger i C++

1. C-stilstrenger

Disse strengene lagres som den vanlige gamle rekken av tegn som avsluttes av en nulltegn « » . De er typen strenger som C++ arvet fra C-språket.



Syntaks:

char str[] = 'techcodeview.com';>

Eksempel:

C++




// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }>

>

>

Produksjon

techcodeview.com>

2. std::string Klasse

Dette er de nye typene strenger som er introdusert i C++ som std::string-klasse definert i header-filen. Dette gir mange fordeler i forhold til konvensjonelle C-stil strenger som dynamisk størrelse, medlemsfunksjoner, etc.

Syntaks:

std::string str('techcodeview.com');>

Eksempel:

C++




// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }>

>

>

Produksjon

techcodeview.com>

En annen måte vi kan lage strenger som har samme karakter som gjentar seg igjen og igjen.

Syntaks:

std::string str(number,character);>

Eksempel:

C++




#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }>

>

>

Produksjon:

ggggg>

Måter å definere en streng i C++

Strenger kan defineres på flere måter i C++. Strenger kan nås fra standardbiblioteket ved å bruke strengklassen. Tegnmatriser kan også brukes til å definere strenger. String gir et rikt sett med funksjoner, for eksempel søk og manipulering, som er ofte brukte metoder. Til tross for at den er mindre avansert enn strengklassen, er denne metoden fortsatt mye brukt, siden den er mer effektiv og enklere å bruke. Måter å definere en streng i C++ er:

  • Bruke streng nøkkelord
  • Bruker strenger i C-stil

1. Bruke streng nøkkelord

Det er mer praktisk å definere en streng med string-nøkkelordet i stedet for å bruke array-nøkkelordet fordi det er lett å skrive og forstå.

Syntaks:

string s = 'techcodeview.com'; string s('techcodeview.com');>

Eksempel:

C++




// C++ Program to demonstrate use of string keyword> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >string str(>'techcodeview.com'>);> >cout <<>'s = '> << s << endl;> >cout <<>'str = '> << str << endl;> >return> 0;> }>

>

>

Produksjon

s = techcodeview.com str = techcodeview.com>

2. Bruke strenger i C-stil

Bruke C-stil strengbibliotekfunksjoner som strcpy(), strcmp() og strcat() for å definere strenger. Denne metoden er mer kompleks og ikke så mye brukt som de to andre, men den kan være nyttig når du arbeider med eldre kode eller når du trenger ytelse.

char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';>

Eksempel:

C++




// C++ Program to demonstrate C-style string declaration> #include> using> namespace> std;> int> main()> {> >char> s1[] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s2[4] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s3[4] =>'gfg'>;> >char> s4[] =>'gfg'>;> >cout <<>'s1 = '> << s1 << endl;> >cout <<>'s2 = '> << s2 << endl;> >cout <<>'s3 = '> << s3 << endl;> >cout <<>'s4 = '> << s4 << endl;> >return> 0;> }>

>

>

Produksjon

s1 = gfg s2 = gfg s3 = gfg s4 = gfg>

Et annet eksempel på C-stil streng:

C++




#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }>

>

>

Produksjon

Your string is= Geeeks for Geeks>

Hvordan ta strenginndata i C++

Strenginput betyr å akseptere en streng fra en bruker. I C++. Vi har ulike typer innspill fra brukeren som avhenger av strengen. Den vanligste måten er å ta innspill med spiser nøkkelord med uttrekksoperatoren (>>) i C++. Metoder for å ta en streng som input er:

  • spiser
  • getline
  • strengstrøm

1. Bruk av Cin

Den enkleste måten å ta strenginndata på er å bruke spiser kommando sammen med strømutvinningsoperatøren (>>).

Syntaks:

cin>>s;>

Eksempel:

C++




postordre traversering av binært tre
// C++ Program to demonstrate string input using cin> #include> using> namespace> std;> int> main() {> >string s;> > >cout<<>'Enter String'>< cin>>s; cout<<'String is: '< return 0; }>

>

>

Produksjon

Enter String String is:>

Produksjon:

Enter String techcodeview.com String is: techcodeview.com>

2. Bruke getline

De getline() funksjon i C++ brukes til å lese en streng fra en inngangsstrøm. Det er deklarert i overskriftsfilen.

Syntaks:

getline(cin,s);>

Eksempel:

C++


forhåndsbestill traversering



// C++ Program to demonstrate use of getline function> #include> using> namespace> std;> int> main()> {> >string s;> >cout <<>'Enter String'> << endl;> >getline(cin, s);> >cout <<>'String is: '> << s << endl;> >return> 0;> }>

>

>

Produksjon

Enter String String is:>

Produksjon:

Enter String techcodeview.com String is: techcodeview.com>

3. Bruke stringstream

De stringstream klasse i C++ brukes til å ta flere strenger som input samtidig.

Syntaks:

stringstream stringstream_object(string_name);>

Eksempel:

C++




// C++ Program to demonstrate use of stringstream object> #include> #include> #include> using> namespace> std;> int> main()> {> >string s =>' techcodeview.com to the Moon '>;> >stringstream obj(s);> >// string to store words individually> >string temp;> >//>> vil operatøren lese fra stringstream-objektet> >while> (obj>> temp) {> >cout << temp << endl;> >}> >return> 0;> }>

>

>

Produksjon

techcodeview.com to the Moon>

Hvordan sende strenger til funksjoner?

På samme måte som vi sender en matrise til en funksjon, kan strenger i C++ sendes til funksjoner som tegnmatriser. Her er et eksempelprogram:

Eksempel:

C++




// C++ Program to print string using function> #include> using> namespace> std;> void> print_string(string s)> {> >cout <<>'Passed String is: '> << s << endl;> >return>;> }> int> main()> {> >string s =>'techcodeview.com'>;> >print_string(s);> >return> 0;> }>

>

>

Produksjon

Passed String is: techcodeview.com>

Pekere og strenger

Pekere i C++ er symbolske representasjoner av adresser. De gjør det mulig for programmer å simulere samtale-for-referanse samt å lage og manipulere dynamiske datastrukturer. Ved å bruke pekere kan vi få det første tegnet i strengen, som er startadressen til strengen. Som vist nedenfor, kan den gitte strengen nås og skrives ut gjennom pekerne.

Eksempel:

C++




// C++ Program to print string using pointers> #include> using> namespace> std;> int> main()> {> >string s =>'Geeksforgeeks'>;> >// pointer variable declared to store the starting> >// address of the string> >char>* p = &s[0];> >// this loop will execute and print the character till> >// the character value is null this loop will execute and> >// print the characters> >while> (*p !=>' '>) {> >cout << *p;> >p++;> >}> >cout << endl;> >return> 0;> }>

>

>

Produksjon

Geeksforgeeks>

Forskjellen mellom String og Character array i C++

Hovedforskjellen mellom en streng og en tegnmatrise er at strenger er uforanderlige, mens tegnmatriser ikke er det.

String

Character Array

Strenger definerer objekter som kan representeres som strengstrømmer. Null-tegnet avslutter en tegnserie med tegn.
Ingen matriseforfall forekommer i strenger da strenger er representert som objekter.

Trusselen om

array forfall

er tilstede i tilfellet med tegnarrayen

En strengklasse gir en rekke funksjoner for å manipulere strenger. Tegnmatriser tilbyr ikke innebygde funksjoner for å manipulere strenger.
Minne tildeles dynamisk. Størrelsen på tegnarrayen må allokeres statisk.

Vit mer om forskjell mellom strenger og tegnarrayer i C++

C++ strengfunksjoner

C++ gir noen innebygde funksjoner som brukes til strengmanipulering, for eksempel strcpy()- og strcat()-funksjonene for å kopiere og sette sammen strenger. Noen av dem er:

Funksjon

Beskrivelse

lengde() Denne funksjonen returnerer lengden på strengen.
bytte() Denne funksjonen brukes til å bytte verdiene til 2 strenger.
størrelse() Brukes til å finne størrelsen på strengen
endre størrelse() Denne funksjonen brukes til å endre størrelsen på strengen til det gitte antallet tegn.
finne() Brukes til å finne strengen som sendes i parametere
push_back() Denne funksjonen brukes til å skyve det beståtte tegnet på slutten av strengen
pop_back() Denne funksjonen brukes til å åpne det siste tegnet fra strengen
klar() Denne funksjonen brukes til å fjerne alle elementene i strengen.
strncmp() Denne funksjonen sammenligner på det meste det første antallet byte av begge beståtte strenger.
strncpy() Denne funksjonen ligner på strcpy()-funksjonen, bortsett fra at maksimalt n byte av src blir kopiert
strrchr() Denne funksjonen finner den siste forekomsten av et tegn i strengen.
strach() Denne funksjonen legger til en kopi av kildestrengen på slutten av målstrengen
finne() Denne funksjonen brukes til å søke etter en bestemt delstreng inne i en streng og returnerer posisjonen til det første tegnet i delstrengen.
erstatte() Denne funksjonen brukes til å erstatte hvert element i området [første, siste) som er lik gammel verdi med ny verdi.
substr() Denne funksjonen brukes til å lage en delstreng fra en gitt streng.
sammenligne() Denne funksjonen brukes til å sammenligne to strenger og returnerer resultatet i form av et heltall.
viske ut() Denne funksjonen brukes til å fjerne en bestemt del av en streng.

C++ Strings iterator funksjoner

I C++ gir innebygde strengiteratorfunksjoner programmereren en enkel måte å endre og krysse strengelementer på. Disse funksjonene er:

Funksjoner Beskrivelse
begynne() Denne funksjonen returnerer en iterator som peker til begynnelsen av strengen.
slutt() Denne funksjonen returnerer en iterator som peker til slutten av strengen.
rfinn() Denne funksjonen brukes til å finne strengens siste forekomst.
rbegin() Denne funksjonen returnerer en omvendt iterator som peker mot slutten av strengen.
gjengi() Denne funksjonen returnerer en omvendt iterator som peker til begynnelsen av strengen.
cbegin() Denne funksjonen returnerer en const_iterator som peker til begynnelsen av strengen.
Noen() Denne funksjonen returnerer en const_iterator som peker mot slutten av strengen.
crbegin() Denne funksjonen returnerer en const_reverse_iterator som peker mot slutten av strengen.
crend() Denne funksjonen returnerer en const_reverse_iterator som peker til begynnelsen av strengen.

Eksempel:

C++




// C++ Program to demonstrate string iterator functions> #include> using> namespace> std;> int> main()> {> >// declaring an iterator> >string::iterator itr;> >// declaring a reverse iterator> >string::reverse_iterator rit;> >string s =>'techcodeview.com'>;> >itr = s.begin();> > >cout <<>'Pointing to the start of the string: '> << *itr<< endl;> >itr = s.end() - 1;> >cout <<>'Pointing to the end of the string: '> << *itr << endl;> >rit = s.rbegin();> >cout <<>'Pointing to the last character of the string: '> << *rit << endl;> >rit = s.rend() - 1;> >cout <<>'Pointing to the first character of the string: '> << *rit << endl;> >return> 0;> }>

>

>

Produksjon

Pointing to the start of the string: G Pointing to the end of the string: s Pointing to the last character of the string: s Pointing to the first character of the string: G>

Stringkapasitetsfunksjoner

I C++ brukes strengkapasitetsfunksjoner for å administrere strengstørrelse og kapasitet. Primære funksjoner for kapasitet inkluderer:

Funksjon Beskrivelse
lengde() Denne funksjonen brukes til å returnere størrelsen på strengen
kapasitet() Denne funksjonen returnerer kapasiteten som er allokert til strengen av kompilatoren
endre størrelse() Denne funksjonen lar oss øke eller redusere strengstørrelsen
krymp for å passe() Denne funksjonen reduserer kapasiteten og gjør den lik minimum.

Eksempel:

C++




#include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> > >// length function is used to print the length of the string> >cout <<>'The length of the string is '> << s.length() << endl;> > >// capacity function is used to print the capacity of the string> >cout <<>'The capacity of string is '> << s.capacity()<< endl;> > >// the string.resize() function is used to resize the string to 10 characters> >s.resize(10);> > >cout <<>'The string after using resize function is '> << s << endl;> > >s.resize(20);> > >cout <<>'The capacity of string before using shrink_to_fit function is '><< s.capacity() << endl;> > >// shrink to fit function is used to reduce the capacity of the container> >s.shrink_to_fit();> >cout <<>'The capacity of string after using shrink_to_fit function is '><< s.capacity() << endl;> >return> 0;> }>

>

>

Produksjon

The length of the string is 13 The capacity of string is 15 The string after using resize function is GeeksforGe The capacity of string before using shrink_to_fit function is 30 The capacity of string...>

Avslutningsvis forklarer denne artikkelen hvordan strenger kan defieres i C++ ved å bruke tegnarrayer og strengklasser. Strengeklassen gir mer avanserte funksjoner, mens tegnarrayen gir grunnleggende funksjoner, men er effektiv og enkel å bruke. I denne artikkelen diskuterte vi også de ulike metodene for å ta innspill fra brukeren.

For å vite mer om std::string class, se artikkelen – std::string klasse i C++