ÎN C++
Generalităţi
Vectorii de caractere pot fi iniţializaţi la
declarare, caracterul nul fiind memorat
automat.
char vect[11]=“calculator”
char vect[]=“calculator”
char vect[100]=“calculator”
Citirea şi scrierea şirurilor de
caractere
#include<iostream.h> #include<iostream.h>
main() main()
{ char a[20]; { char a[20];
int i; cin>>a;
for(i=0;i<10;i++) cin>>a[i]; cout<<a;
a[10]=0; }
for(i=0; i<10; i++) cout<<a[i];
}
Citirea şi scrierea şirurilor de
caractere
Caracterul nul este adăugat automat
Putem citi orice cuvânt cu un număr de
până la 19 caractere – excluzând
caracterul nul.
Putem să rezervăm, în limita memoriei pe
care o are la dispoziţie programul, un
număr mai mare de octeţi.
Un vector poate fi adresat pe componente
Se sar caracterele albe.
Se citeşte şirul care începe cu primul
caracter care nu este alb şi se sfârşeşte la
întâlnirea primului caracter alb.
Pentru citirea şirurilor de caractere vom
utiliza o funcţie de un tip special, şi
anume:
cin.get(vector_de_caractere, int nr, char=‘\n’)
Funcţia
cin.get(vector_de_caractere, int nr, char=‘\n’)
citeşte un şir de caractere până când este
îndeplinită una dintre condiţiile de mai jos:
au fost citite nr-1 caractere;
a fost întâlnit caracterul transmis ca ultim
parametru (implicit “\n”).
Observaţii
Sunt citite şi caractere albe.
Este inserat caracterul nul.
Caracterul transmis ca ultim parametru nu
este inserat în şir.
Al treilea parametru este trecut în mod
facultativ.
Care este efectul în ce două
exemple?
char a[10] char a[10]
cin.get(a,3) cin.get(a,10,’g’)
cout<<a; cout<<a;
În C++ pot exista mai multe funcţii cu acelaşi
nume, dar care diferă prin parametrii
primiţi.
Funcţia
cin.get()
fără parametri are rolul de a citi un caracter
(fie că este alb, fie că nu)
Tipul char*
#include<iostream.h>
Limbajul C++ permite main()
ca un vector de { char a[]=“casa”;
să
cout<<a+1<<“ ”<<a+2<<“ ”;
caractere fie cout<<a+3;
adresat începând de }
la un anumit octet al
său.
Tipul char*
#include<iostream.h>
când scriem a, adresăm main()
vectorul începând cu { char a[]=“casa”;
primul octet cout<<a+1<<“ ”<<a+2<<“ ”;
când scriem a+1, cout<<a+3;
adresăm vectorul }
începând cu al doilea
octet
când scriem a+2,
adresăm vectorul
începând cu al treilea
octet
Tipul char*
Vectorii astfel adresaţi pot fi
accesaţi aşa cum suntem
deja obişnuiţi.
(a+1)[0] reţine caracterul ‘a’
(a+1)[1] reţine caracterul ‘s’
#include<iostream.h>
main()
{ char a[]=“casa”;
cout<<a+1<<“ ”<<a+2<<“ ”;
cout<<a+3;
}
Tipul char*
Tipulexpresiilor a-1, a-2 este de tip char*,
adică sunt adrese.
Numărul de ordine al unui octet în
memoria internă se numeşte adresa
octetului respectiv.
Adresa unui vector de caractere este
adresa primului său octet.
Tipul char*
O variabilă de tip char* poate reţine
adresa unui vector de caractere.
În C++, numele unui vector de caractere
este o adresă constantă de vector şi poate
fi atribuit unei variabile de tip char*.
Tipul char*
#include<iostream.h>
a este un vector de main()
caractere { char a[]=“Exemplu”, *p;
p=a; cout<<p<<endl;
p este o variabilă de p++; cout<<p<<endl;
tip char*. p++; cout<<p<<endl;
cout<<p[1]<<endl;
cout<<p-a;
}
Lungimea unui şir de caractere
Funcţia strlen are rolul de a returna
lungimea efectivă a unui şir:
size_t strlen(char* a)
unde:
size_t este un tip întreg, utilizat în
adresarea memoriei, definit în string.h
argumentul este de tip char*(adică o
adresă către un şir).
Copierea şi concatenarea şirurilor
de caractere
Funcţia strcpy are forma generală