|

Funcții de Conversie din Biblioteca în C++ 7


1. Introducere

Biblioteca <cstdlib> oferă funcții utile pentru conversia șirurilor de caractere (în stil C) în tipuri numerice și invers. Aceste funcții sunt esențiale pentru transformarea datelor în aplicații precum procesarea intrărilor utilizatorului sau manipularea fișierelor text.


2. Funcțiile de conversie principale

FuncțieDescriereExemplu
atoi(sir)Convertește un șir de caractere într-un întreg (int).atoi(„123”) -> 123
atol(sir)Convertește un șir de caractere într-un număr întreg lung (long).atol(„123456789”) -> 123456789
atoll(sir)Convertește un șir de caractere într-un număr întreg lung lung (long long).atoll(„123456789123456789”)
atof(sir)Convertește un șir de caractere într-un număr cu virgulă mobilă (double).atof(„123.45”) -> 123.45
strtol(sir, endptr, baza)Convertește un șir de caractere într-un întreg lung (long), cu suport pentru baze diferite (ex: binar, octal, hexazecimal).strtol(„101”, NULL, 2) -> 5
strtoll(sir, endptr, baza)Convertește un șir de caractere într-un long long, cu suport pentru baze.strtoll(„1A”, NULL, 16) -> 26
strtof(sir, endptr)Convertește un șir de caractere într-un număr cu virgulă mobilă (float).strtof(„3.14”, NULL) -> 3.14
strtod(sir, endptr)Convertește un șir de caractere într-un double.strtod(„2.718”, NULL) -> 2.718
strtold(sir, endptr)Convertește un șir de caractere într-un long double.strtold(„3.1415926535”, NULL)
itoa(val, sir, baza)Convertește un număr întreg (int) într-un șir de caractere, folosind o bază specificată. (non-standard în unele compilatoare).itoa(255, sir, 16) -> „FF”

3. Detalii despre funcții


1. Conversii simple: atoi, atof, atol

  • Sunt cele mai simple funcții pentru conversia șirurilor într-un tip numeric.
  • Exemplu:

#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

    char sirInt[] = „123”;

    char sirFloat[] = „456.78”;

    int numarInt = atoi(sirInt);

    double numarFloat = atof(sirFloat);

    cout << „Numar intreg: ” << numarInt << endl;

    cout << „Numar real: ” << numarFloat << endl;

    return 0;

}


2. Conversii avansate: strtol, strtoll, strtof

  • Aceste funcții permit control asupra bazei de conversie și a erorilor.
  • Exemplu cu bază:

#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

    char sirBinar[] = „101”;

    char sirHexa[] = „1A”;

    long numarBinar = strtol(sirBinar, NULL, 2); // Conversie binară

    long numarHexa = strtol(sirHexa, NULL, 16);  // Conversie hexazecimală

    cout << „Numar binar: ” << numarBinar << endl;

    cout << „Numar hexazecimal: ” << numarHexa << endl;

    return 0;

}

  • Exemplu cu pointer la rest:

#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

    char sir[] = „123abc”;

    char* endPtr;

    long numar = strtol(sir, &endPtr, 10);

    cout << „Numarul extras: ” << numar << endl;

    cout << „Restul șirului: ” << endPtr << endl;

    return 0;

}


3. Conversia inversă: itoa (non-standard)

  • Convertiți un număr într-un șir folosind baza specificată.
  • Exemplu:

#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

    int numar = 255;

    char sir[20];

    itoa(numar, sir, 16); // Conversie în hexazecimal

    cout << „Numarul 255 în hexazecimal este: ” << sir << endl;

    return 0;

}


4. Compararea funcțiilor simple cu cele avansate

Caracteristicăatoi, atofstrtol, strtof
Suport pentru bazeNuDa
Gestionarea erorilorNuDa (endptr)
Conversie parțialăNuDa

5. Activități practice pentru elevi

  1. Scrieți un program care citește un șir conținând un număr hexazecimal și îl convertește într-un întreg.
  2. Realizați un program care transformă un șir în mai multe tipuri numerice (int, float, double).
  3. Implementați un program care verifică validitatea unui șir înainte de conversie (utilizând strtol și endptr).

6. Scheme logice

  1. Conversia unui șir într-un număr:
    • Start -> Apel atoi sau strtol -> Returnare rezultat -> Stop.
  2. Conversia unui număr într-un șir:
    • Start -> Apel itoa sau echivalent -> Returnare șir -> Stop.

7. Concluzie

  • Funcțiile din <cstdlib> sunt esențiale pentru manipularea șirurilor și numerelor în stil C.
  • Alegerea între funcțiile simple (atoi, atof) și cele avansate (strtol, strtof) depinde de complexitatea cerințelor.
  • Este important să verificați validitatea șirurilor pentru a evita erorile de conversie.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *