Documente Academic
Documente Profesional
Documente Cultură
com/reference/cstring
In memoria interna, o constanta de acest tip este retinuta sub forma unui vector de
caractere.
Fiecare componenta a sirului (incepand cu cea de indice 0) retine codul ASCII al
caracterului pe care il memoreaza.
Conventia este ca ultimul octet sa retina 0 (codul caracterului nul).
Caracterul nul este memorat automat. Trebuie rezervate lungimea_sirului+1 caractere
char (+1 pentru caracterul nul).
Limbajul C/C++ permite initializarea unui tablou de caractere printr-o constanta sir, care
include automat caracterul NULL sau \0
Exemplu :
char vect[11]=”calculator”; (O constanta de tip sir de caractere de declara intre doua caractere “ ”)
char tablouc*12+ = ,’c’, ’l’, ’a’, ’s’, ’a’,' ','a',' ','X','I','-','A'}; // tablou de caractere
char sirc*13+ = ,’c’, ’l’, ’a’, ’s’, ’a’,' ','a',' ','X','I','-','A','\0'}; // sirul de caractere : clasa a XI-a
char sir[50];
Afisari si atribuiri:
sc [4]='C';
cout<<sc<<endln; // se afiseaza plaCa a XI-a
Citirea si afisarea
Sirurile de caractere pot fi initializate inca de la declarare sau citite pe parcursul programului.
1. Citirea unui sir de caractere se poate face ca citirea oricarui tablou, intr-un FOR, caracter cu
caracter. Aceasta varianta nu este recomandata. In acest caz, terminatorul de sir '\0' nu este
memorat automat, el trebuie pus explicit dupa ultimul caracter din sir.
Exemplu:
char sir[20];
for(int i=0;i<=5;i++)
cin>>sir[i];
cout<<sir<<endl; /*se va afisa sirul format din cele 6 caractere, urmat de caractere „reziduale”,
initializate implicit la compilare, din cauza ca n-a fost pus terminatorul de sir*/
sir[6]=0; //introducem terminatorul de sir
cout<<sir<<endl; //sirul va fi afisat corect
Exemplu:
char sir[30];
cin>>sir;
cout<<sir;
3. Se poate folosi o functie speciala cin.get() pentru citirea sirurilor de caractere, inclusa in
biblioteca string.h.
int nrcaractere;
cin.get(sir, nrcaractere, c_end);
Functia cin.get citeste un sir de caractere pana cand au fost citite nrcaractere-1 caractere sau pana
s-a intalnit caracterul c_end.
Parametrul c_end poate lipsi. Implicit acesta este ’\n’ (new line).
Pot fi citite si caracterele albe, caracterul nul este inserat automat iar caracterul transmis ca ultim
parametru nu este inserat in sir.
Exemple:
char sir[30]="informatica";
cin.get(sir,5,’?’); //variabila sir va retine “info”
cin.get(sir,15,’*’); //variabila sir va retine “informatica”
cin.get(sir,15,’o’); //variabila sir va retine “inf” deoarece s-a intalnit caracterul 'o' pe a
patra pozitie in sir
cin.get(sir,4,’c’); //variabila a va retine “inf”
cin.get(sir,15); //variabila a va retine “informatica”
Funcţii care lucrează cu șiruri de caractere (#include<string.h>)
1. Functia strlen( )
Are rolul de a returna lungimea unui şir(fără a lua în considerare caracterul nul).
Exemplu Se compară șirul a cu șirul b şi se listează relația dintre cele 2 șiruri astfel:
- dacă primele n caractere sunt identice se compară caracterele n+1
- dacă caracterul n+1 al șirului a este situat alfabetic înaintea caracterului n+1 al șirului b se afișează
a<b
- dacă caracterul n+1 al șirului a este situat alfabetic după caracterul n+1 al șirului b se afișează a>b
- dacă primul caracter al șirului a este situat alfabetic înaintea primului caracter al șirului b se
afișează a<b indiferent de lungimea celor 2 șiruri
- dacă primul caracter al șirului a este situat alfabetic după primul caracter al șirului b se
afișează a>b indiferent de lungimea celor 2 șiruri
8. Functiile strlwr ş i struwr
strlwr(s1) - convertește toate literele șirului s1 în litere mici strupr(s2) -
convertește toate literele șirului s2 în litere mari
9. Funcția care identifică dacă șirul sir2 este subșir al șirului sir1
#include <iostream>
#include<string.h>
using namespace std;
int main()
{
int a;
char s1[100],s2[100];
cout<<"tasteaza o fraza: ";
cin.get(s1,100);
cin.get();
cout<<"tasteaza o fraza: ";
cin.get(s2,100);
cin.get();
a=strcspn(s1,s2); //returneaza numarul caracterelor din s1 si nu sunt in s2
cout<<a;
return 0;
}
11. Functia spn ( )
Forma generală: strspn(s1,s2)
Funcția returnează numărul caracterelor din șirul s1 care se găsesc în șirul s2
#include <iostream>
#include<string.h>
#include <stdio.h>
using namespace std;
int main()
{
int a;
char s1[100],s2[100];
cout<<"tasteaza o fraza: ";
cin.get(s1,100);
cin.get();
cout<<"tasteaza o fraza: ";
cin.get(s2,100);
cin.get();
a=strspn(s1,s2);
cout<<a;
return 0;
}