logo

Șiruri în C++

Șirurile C++ sunt secvențe de caractere stocate într-o matrice de caractere. Șirurile sunt folosite pentru a stoca cuvinte și text. De asemenea, sunt folosite pentru a stoca date, cum ar fi numere și alte tipuri de informații. Șirurile în C++ pot fi definite fie folosind clasa std::string sau Matrice de caractere în stil C.

Șiruri în C++



1. Șiruri de stil C

Aceste șiruri de caractere sunt stocate ca o matrice simplă veche de caractere terminată cu a caracter nul „ ” . Sunt tipul de șiruri pe care C++ le-a moștenit din limbajul C.

Sintaxă:

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

Exemplu:



C++






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

>

>

Ieșire

techcodeview.com>

2. std::string Clasa

Acestea sunt noile tipuri de șiruri care sunt introduse în C++ ca clasă std::string definită în fișierul antet. Acest lucru oferă multe avantaje față de șirurile convenționale în stil C, cum ar fi dimensiunea dinamică, funcțiile membre etc.

Sintaxă:

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

Exemplu:

C++




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

>

>

Ieșire

techcodeview.com>

Încă o modalitate prin care putem crea șiruri care au același caracter care se repetă din nou și din nou.

Sintaxă:

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

Exemplu:

C++




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

>

>

Ieșire:

ggggg>

Modalități de a defini un șir în C++

Șirurile pot fi definite în mai multe moduri în C++. Șirurile pot fi accesate din biblioteca standard folosind clasa șiruri. Matricele de caractere pot fi folosite și pentru a defini șiruri. String oferă un set bogat de caracteristici, cum ar fi căutarea și manipularea, care sunt metode utilizate în mod obișnuit. În ciuda faptului că este mai puțin avansată decât clasa string, această metodă este încă utilizată pe scară largă, deoarece este mai eficientă și mai ușor de utilizat. Modalitățile de a defini un șir în C++ sunt:

  • Folosind cuvântul cheie String
  • Folosind șiruri în stil C

1. Folosind șir Cuvânt cheie

Este mai convenabil să definiți un șir cu cuvântul cheie șir în loc să utilizați cuvântul cheie matrice, deoarece este ușor de scris și de înțeles.

Sintaxă:

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

Exemplu:

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

>

>

Ieșire

s = techcodeview.com str = techcodeview.com>

2. Folosind șiruri în stil C

Folosind funcții de biblioteci de șiruri în stil C, cum ar fi strcpy(), strcmp() și strcat() pentru a defini șiruri. Această metodă este mai complexă și nu este la fel de utilizată ca celelalte două, dar poate fi utilă atunci când aveți de-a face cu cod vechi sau când aveți nevoie de performanță.

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

Exemplu:

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

>

>

Ieșire

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

Un alt exemplu de șir în stil C:

C++




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

>

>

Ieșire

Your string is= Geeeks for Geeks>

Cum să preluați intrarea șirurilor în C++

Intrarea unui șir înseamnă acceptarea unui șir de la un utilizator. În C++. Avem diferite tipuri de preluare a intrărilor de la utilizator, care depind de șir. Cea mai obișnuită modalitate este de a prelua intrarea cu mâncând cuvânt cheie cu operatorul de extracție (>>) în C++. Metodele de a lua un șir ca intrare sunt:

  • mâncând
  • getline
  • stringstream

1. Utilizarea Cin

Cel mai simplu mod de a prelua intrarea șirului de caractere este să utilizați mâncând comanda împreună cu operatorul de extragere a fluxului (>>).

Sintaxă:

cin>>s;>

Exemplu:

C++




sortare grămadă
// 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; }>

>

>

Ieșire

Enter String String is:>

Ieșire:

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

2. Folosind getline

The funcția getline() în C++ este folosit pentru a citi un șir dintr-un flux de intrare. Este declarat în fișierul antet.

Sintaxă:

getline(cin,s);>

Exemplu:

C++




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

>

>

Ieșire

Enter String String is:>

Ieșire:

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

3. Folosind stringstream

The clasa stringstream în C++ este folosit pentru a prelua mai multe șiruri de caractere ca intrare simultan.

Sintaxă:

stringstream stringstream_object(string_name);>

Exemplu:

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;> >//>> operatorul va citi din obiectul stringstream> >while> (obj>> temp) {> >cout << temp << endl;> >}> >return> 0;> }>

>

>

Ieșire

techcodeview.com to the Moon>

Cum să treci șiruri de caractere la funcții?

În același mod în care trecem o matrice unei funcții, șirurile din C++ pot fi transmise funcțiilor ca matrice de caractere. Iată un exemplu de program:

Exemplu:

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

>

>

Ieșire

Passed String is: techcodeview.com>

Pointere și șiruri

Pointerii în C++ sunt reprezentări simbolice ale adreselor. Acestea permit programelor să simuleze apelul prin referință, precum și să creeze și să manipuleze structuri dinamice de date. Folosind pointeri putem obține primul caracter al șirului, care este adresa de pornire a șirului. După cum se arată mai jos, șirul dat poate fi accesat și imprimat prin indicatori.

Exemplu:

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

>

>

dacă prin rezumatul rudyard kipling
Ieșire

Geeksforgeeks>

Diferența dintre șir și matrice de caractere în C++

Principala diferență dintre un șir și o matrice de caractere este că șirurile sunt imuabile, în timp ce matricele de caractere nu sunt.

Şir

Matrice de caractere

Șirurile definesc obiecte care pot fi reprezentate ca fluxuri de șiruri. Caracterul nul termină o matrice de caractere.
Nu apare nicio dezintegrare a matricei în șiruri, deoarece șirurile sunt reprezentate ca obiecte.

Amenințarea cu

dezintegrarea matricei

este prezent în cazul matricei de caractere

O clasă de șiruri oferă numeroase funcții pentru manipularea șirurilor. Matricele de caractere nu oferă funcții încorporate pentru a manipula șirurile.
Memoria este alocată dinamic. Mărimea matricei de caractere trebuie alocată static.

Aflați mai multe despre diferența dintre șiruri și matrice de caractere în C++

Funcții șiruri C++

C++ oferă câteva funcții încorporate care sunt utilizate pentru manipularea șirurilor, cum ar fi funcțiile strcpy() și strcat() pentru copierea și concatenarea șirurilor. Unii dintre ei sunt:

Funcţie

Descriere

lungime() Această funcție returnează lungimea șirului.
swap() Această funcție este folosită pentru a schimba valorile a 2 șiruri.
mărimea() Folosit pentru a găsi dimensiunea șirului
redimensiona() Această funcție este folosită pentru a redimensiona lungimea șirului până la numărul de caractere dat.
găsi() Folosit pentru a găsi șirul care este transmis în parametri
împinge înapoi() Această funcție este folosită pentru a împinge caracterul transmis la sfârșitul șirului
pop_back() Această funcție este folosită pentru a afișa ultimul caracter din șir
clar() Această funcție este folosită pentru a elimina toate elementele șirului.
strncmp() Această funcție compară cel mult primii num de octeți din ambele șiruri transmise.
strncpy() Această funcție este similară cu funcția strcpy(), cu excepția faptului că sunt copiați cel mult n octeți de src
strrchr() Această funcție localizează ultima apariție a unui caracter în șir.
strcat() Această funcție atașează o copie a șirului sursă la sfârșitul șirului destinație
găsi() Această funcție este folosită pentru a căuta un anumit subșir în interiorul unui șir și returnează poziția primului caracter al subșirului.
a inlocui() Această funcție este utilizată pentru a înlocui fiecare element din intervalul [primul, ultimul) care este egal cu valoarea veche cu o valoare nouă.
substr() Această funcție este folosită pentru a crea un subșir dintr-un șir dat.
comparaţie() Această funcție este folosită pentru a compara două șiruri de caractere și returnează rezultatul sub forma unui număr întreg.
şterge() Această funcție este folosită pentru a elimina o anumită parte a unui șir.

Funcții iteratoare de șiruri de caractere C++

În C++, funcțiile de iterator de șiruri încorporate oferă programatorului o modalitate ușoară de a modifica și traversa elementele de șir. Aceste funcții sunt:

Funcții Descriere
ÎNCEPE() Această funcție returnează un iterator care indică la începutul șirului.
Sfârşit() Această funcție returnează un iterator care indică la sfârșitul șirului.
rfind() Această funcție este folosită pentru a găsi ultima apariție a șirului.
rbegin() Această funcție returnează un iterator invers care indică la sfârșitul șirului.
face() Această funcție returnează un iterator invers care indică la începutul șirului.
cbegin() Această funcție returnează un const_iterator care indică la începutul șirului.
câțiva() Această funcție returnează un const_iterator care indică la sfârșitul șirului.
crbegin() Această funcție returnează un const_reverse_iterator care indică la sfârșitul șirului.
crez() Această funcție returnează un const_reverse_iterator care indică la începutul șirului.

Exemplu:

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

>

>

Ieșire

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>

Funcții de capacitate a șirurilor

În C++, funcțiile de capacitate a șirurilor sunt utilizate pentru a gestiona dimensiunea și capacitatea șirurilor. Funcțiile primare ale capacității includ:

Funcţie Descriere
lungime() Această funcție este folosită pentru a returna dimensiunea șirului
capacitate() Această funcție returnează capacitatea care este alocată șirului de către compilator
redimensiona() Această funcție ne permite să creștem sau să micșorăm dimensiunea șirului
shrink_to_fit() Această funcție scade capacitatea și o face egală cu minimul.

Exemplu:

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

>

>

Ieșire

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...>

În concluzie, acest articol explică modul în care șirurile pot fi sfidate în C++ folosind matrice de caractere și clase de șiruri. Clasa șir oferă caracteristici mai avansate, în timp ce matricea de caractere oferă caracteristici de bază, dar este eficientă și ușor de utilizat. În acest articol, am discutat, de asemenea, despre diferitele metode de a primi informații de la utilizator.

Pentru a afla mai multe despre clasa std::string, consultați articolul - clasă std::string în C++