Stringuri in C++
Pointeri Variabile cara au ca valoare o adresă de memorie terminata cu terminator de sir '\0';
Declarare:
char sir[lg+1],*p;
//lg=lungime sirului + o pozitie pentru terminator
//*p pointer
Iniţializări
char var[]="aeiouAEIOU",*cif[]="0123456789",sir[1000]="Exemplu de string 2009";
Citirea
- Text fară caractere albe
Citire la iostream.h sau fstream.h
fin>>sir;
sau la stdio.h
scanf("%s",&sir);
- Text cu caractere albe
Citire la iostream.h sau fstream.h
fin.get(sir,lg-max)
fin.get(sir,lg-max,caracter-de-oprire)
Se citeşte şirul până la caracter-de-oprire, dar fără a depăşi lg-maxş
fin.get(sir,20,' '); //sir="exemplu"
fin.get(sir,20,'.'); //sir="exemplu de string 20"
fin.get(sir,999); //sir="exemplu de string 2009"
- Citirea cu fin.gettline
fin.gettline(sir,lg_max);
fin.gettline(sir,lg_max,caracter-de-oprire);
gettline extrage şi caracterul de oprire din zona breffer(intermediară);
get doar verifică dacă urmează caracterul de oprire, nu îl extrage;
fin.get(); //extrage caracterul curent din breffer
gets(sir); // citeşte şirul curent (poate contine şi spaţii)
Afişarea
Afisarea în iostream.h şi fstream.h
fout<<sir;
sau în stdio.h
printf("%s",sir);
Funcţii
Aflarea lungimii unui sir
a="String"
n=strlen(a); //n=6
Copierea
- a<-b
strcpy(a,b);
- a <- secventa din b
b="String";
strcpy(a,b,nr_caractere);
a[nr_caractere]='\0';
b="String";
strcpy(a,b,5);
a[5]='\0'; //a="Strin"
b="String";
strcpy(a,b+2,2);
a[2]='\0';// a="ri";
Compararea
- "Aer<"aer" dacă folosim funcţia strcmp care face diferenţa dintre literele mici si cele mari
strcmp("Aer","aer");// <
strcmp("aer","Aer");// >
strcmp("aer","aer");// =
strcmp(a,b);
- "AeR"="aer" dacă folosim funcţia stricmp care nu face diferenţa dintre literele mici si cele mari
stricmp("AeR","aer");//=
stricmp("abc","abd");//<
stricmp("abd","abc");//>
stricmp(a,b);