
12. Funcţii de conversie
a.) Conversia unui întreg în sir de caractere
char *itoa(int valoare, char *s, int baza);
valoare -valoarea de convertit
s -variabila sir care va conţine şirul obţinut
baza -specifica baza utilizată în conversie (trebuie să fie între 2 şi 36
inclusiv). In cazul în care valoarea este negativa şi baza este 10, primul caracter al şirului va fi (-).
Descriere
Pentru utilizarea funcţiei trebuie inclus heder-ul stdlib.h.
Converteşte un întreg într-un şir de caractere. Şirul obţinut prin conversie va conţine caracterul 0 pe ultima poziţie.
Lungimea şirului returnat poate fi cel mult 17 bytes.
Valoarea returnată
Funcţia returnează adresa şirului obţinut.
Exemplu: Să se convertească un număr întreg într-un şir de caractere, folosind baza 2.
//ITOA
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void main()
{int k,baza;
char s[17];
cout<<"numar:";cin>>k;
cout<<"baza:";cin>>baza;
itoa(k,s,baza); //converteste numarul in sir
cout<<"sirul:"<<s;
getch();
}
Alte funcţii de conversie similare:
Funcţia ltoa converteşte o valoare de tip long int într-un şir de
caractere.
char *ltoa(int valoare, char *s, int baza);
Funcţia ultoa converteşte o valoare de tip unsigned longt într-un şir de
caractere.
char *ltoa(int valoare, char *s, int baza);
b.) Conversia unui şir de caractere într-un întreg
long strtol(const char *s, char **adresa, int baza);
s -sirul se convertit
adresa -adresa unei variabile de tip char*, rwţine adresa caracterului din şir
care nu poate fi convertit.
baza -baza în care este considerat numărul sub formă de şir. Poate avea valorile 8, 10 sau 16.
Descriere
Pentru utilizarea funcţiei trebuie inclus heder-ul stdlib.h.
Funcţia strtol converteşte şir de caractere într-o valoare de tip long.
Valoarea returnată
Funcţia returnează adresa şirului obţinut.
Exemplu: Să se convertească un şir de caractere conţinând un număr în baza 10 în număr. În cazul în care nu poate fi convertit să se afişeze de unde nu poate fi convertit.
Alte funcţii de conversie similare:
Funcţia strtod converteşte şir de caractere într-o valoare de tip double.
double strtod(const char *s, char **adresa, int baza);
Funcţia strtold converteşte şir de caractere într-o valoare de tip long
double.
long double strtold(const char *s, char **adresa, int baza);
Funcţia strtoul converteşte şir de caractere într-o valoare de tip
unsigned long.
unsigned long strtol(const char *s, char **adresa, int baza);
//STRTOL
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void main()
{int baza;
long k;
char s[17],*p=NULL;
cout<<"sir:";cin>>s;
cout<<"baza(8,10,16):";cin>>baza;
k=strtol(s,&p,baza); //face conversia
cout<<"valoarea numerica:"<<k<<endl;
cout<<"nu s-a putut converti de la:"<<p; //afiseaza de unde nu poate fi convertit
getch();
}