Spre deosebire de Pascal, in
C++ lucrul cu siruri de caractere este destul de greoi.Din acest motiv, in
Builder exista un tip nou, numit AnsiString. O variabila de acest tip poate
retine un sir de caractere.De asemenea, exista o multime de functii cu ajutorul
carora lucrul cu siruri de caratere devine deosebit de usor.
Pentru cei care au studiat
OOP, putem spune ca AnsiString este de fapt o clasa, cu o multime de metode, de
tip constructor sau nu, functii prieten, care , uneori, sunt rezultate prin
supraincarcarea operatorilor (vezi concatenarea sirurilor, unde se utilizeaza
operatorul +).
O variabila de tip
AnsiString se declara asa cum se vede mai jos.De asemenea, se poate observa cum
unei astfel de variabile i se atribuie uin sir de caratere , dupa care poate fi
afisata cu ShowMessage ( ).
AnsiString S;
S=”Un sir”;
ShowMessage ( S );
O variabila de tip
AnsiString poate fi initializata de la declaratie:
AnsiString S=”Un sir”;
ShowMessage (S);
O variabila de tip AnsiString poate fi
initializata de la declaratie si asa:
AnsiString S(„Un sir”);
ShowMessage (S);
Doua astfel de variabile pot fi concatenate cu
ajutorul operatorului +. In acest fel se obtine un sir de caractere format din
primul sir (continutul lui S) la care se adauga al doilea sir (continutul lui
T);
AnsiString S=”Un sir”,T=”alt
sir”;
S=S+T;
ShowMessage(S);
Operatia de
concatenare nu este comutativa!
Functia IntToStr are rolul de a converti o valoare intreaga in sir de caractere.
AnsiString IntToStr
(int);
In secventa urmatoare, sirul obtinut dupa conversie este atribuit unei variabile de tip AnsiString, dupa care este afisat:
AnsiString S;
int n=17;
S=IntToStr (n);
ShowMessage (S);
Functia FloatToStr are rolu de a converti o valoare reala in sir de caractere.
AnsiString FloatToStr
(float);
In secventa urmatoare, sirul obtinut dupa conversia este atribuit unei variabile de tip AnsiString , dupa care este afisat:
AnsiString S;
float x= -17.65;
S=FloatToStr (x);
ShowMessage (S);
Functia StrToInt are rolul de a converti un sir de caractere catre o valoare intreaga.
int StrToInt
(AnsiString);
In secventa urmatoare, se convertesc catre valori intregi doua siruri, se face suma lor, iar rezultatul este convertit catre sir, pentru afi afisat:
AnsiString S=”-17”,T=”22”;
Int x=StrToInt (S)+StrToInt (T);
ShowMessage (IntToStr (x));
Functia StrToFloat are rolul de a converti un sir de caractere catre o valoare reala.
float StrToFloat
(AnsiString);
In secventa urmatoare, se convertesc catre valori reale doua siruri, se face suma lor, iar rezultatul este convertit catre sir, pentru a fi afisat:
AnsiString S=”17.5”,T=”22”;
float
x=StrToFloat (S)+StrToFloat(T);
ShowMessage (FloatToStr(x));
In cazul in care, pentru ultimele doua functii conversia nu reuseste (datele sunt eronate) programul da eroare de executie ca in exemplul urmator unde sirul S nu poate fi convetit catre intregi:
AnsiString S=”-A17”,T=”22”;
int x=StrToInt (S)+StrToInt (T);
AnsiString este, asa cum am
precizat, o clasa.Prin urmare, ea este inzestrate cu metode proprii.
1. Metoda Length
–returneaza lungimea sirului de caractere.
int Length ( )
AnsiString S(„1a2na”);
ShowMessage (IntToStr
(S.Length ( ))); // Se afiseaza 5;
Atentie! Se apeleaza variabila_sir.Length( ). Apelul metodelor
unor clase se face: obiect.metoda( );
2. Metoda LowerCase -returneaza sirul scris cu litere mici:
AnsiString LowerCase ( )
AnsiString S(„1A2Na”);
ShowMessage(S.LowerCase
()); // se afiseaza 1a2na
3. Metoda UpperCase -returneaza sirul scris cu litere mari:
AnsiString UpperCase ( )
AnsiString S(„1a2Na”);
4. Metoda SubString -
are rolul de a returna subsirul care incepe cu octetul (caracterul) de indice index
si are lungimea lung:
AnsiString SubString(int index,int lung);
AnsiString S=”floare”;
5. Metoda Insert -
are rolul de a insera sir
inaintea octetului (caracterului) de indice index:
void Insert (AnsiString sir, int Index);
AnsiString S=”Mica”,T=”ti”;
S.Insert (T,3);
6. Metoda Delete - are rolul de a suprima dintr-un sir subsirul care incepe cu octetul (caracterul) de indice index si are lungimea lung:
void Delete (int index, int lung);
AnsiString S=”Mitica”;
S.Delete(3,2);
ShowMessage(S);
// se afiseaza Mica
7. Metoda AnsiCompare -compara sirul curent (pentru care este apelata) cu sirul transmis ca parametru.Compararea este lexicografica si intrucat a fost studiata, nu insistam asupra ei.(functioneaza similar cu functia strcmp(sir1,sir2), pe care o cunoasteti.). Functia va fi utila in cazul cautarii unui sir intr-o secventa de siruri sau la ordonarea unor siruri.
int AnsiCompare (AnsiString sir);
Rezultatul este:
·
0
, in caz de egalitate;
·
-1
, daca sirul curent este mai mic;
·
+1
,daca sirul curent este mai mare;
AnsiString S=”toamna”,T=”vara”;
int n=S.AnsiCompare (T);
ShowMessage(IntToStr (n)); // se afiseaza –1
Uneori este necesar ca o valoare memeorata in
virgula mobila sa fie convertita cu format catre un sir.Pentru aceasta, este
utila metoda FloatToStrF(
).
Forma pe care o vom folosi pentru aceasta metoda este:
AnsiString FloatToStrF(variabila
reala, AnsiString::sffFixed, int v, int zecimale);
Variabila v trebuie sa ia valorile:
7 daca se converteste catre sir o variabila de tip
float;
15 daca se converteste catre sir o variabila de tip
double;
18 daca se converteste catre sir o variabila de tip
long double;
Daca rezultatul nu incape se fac rotunjiri.
AnsiString s;
float x= -1239.5678 ;
s=FloatToStrF(x,AnsiString::sffFixed,7,2);
ShowMessage(s);
// se aafiseaza –1239.57