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

Probleme cu stringuri

Password (Rotatie lexicografic minima)
Litere
Mesaj