cstdlib library (tsz. cstdlib libraries)
A cstdlib
egy szabványos C++ könyvtár, amely számos fontos függvényt biztosít, elsősorban memóriakezelésre, konverziókra, véletlenszám-generálásra és egyéb segédfüggvényekre. Ezt a könyvtárat a <cstdlib>
fejlécfájllal lehet beilleszteni a programba.
A cstdlib
könyvtár funkciói főként a C nyelvből származnak, de a C++ programozás során is széles körben használják. Az alábbiakban részletesen bemutatjuk a legfontosabb függvényeket és azok használatát példákkal együtt.
rand()
és srand()
)A cstdlib
könyvtárban található rand()
függvény egy véletlenszerű egész számot ad vissza a tartományban. Az
srand()
függvény segítségével beállíthatjuk a véletlenszám-generátor kezdőértékét.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(NULL)); // Véletlenszám-generátor inicializálása
int randomSzam = rand(); // Egy véletlen szám generálása
cout << "Véletlen szám: " << randomSzam << endl;
// 1 és 100 közötti véletlenszám generálása
int randomTartomanyban = rand() % 100 + 1;
cout << "1 és 100 közötti véletlen szám: " << randomTartomanyban << endl;
return 0;
}
srand(time(NULL))
– Biztosítja, hogy minden programfuttatás más véletlenszámokat generáljon.RAND_MAX
– A lehetséges legnagyobb érték (általában 32767).
malloc()
, calloc()
, realloc()
, free()
)A cstdlib
dinamikus memóriakezelési függvényeket is tartalmaz. Ezek hasznosak, ha a program futása során kell memóriát foglalni vagy felszabadítani.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
// Memória foglalása egy egész számra
int* ptr = (int*)malloc(sizeof(int));
if (ptr == NULL) {
cout << "Memóriafoglalási hiba!" << endl;
return 1;
}
*ptr = 42; // Érték beállítása
cout << "Dinamukusan foglalt érték: " << *ptr << endl;
free(ptr); // Memória felszabadítása
return 0;
}
malloc(size_t size)
– Memóriaterület foglalása adott méretben, a visszatérési érték egy void*
típusú mutató.calloc(size_t num, size_t size)
– malloc()
-hoz hasonló, de az összes bájtot nullára inicializálja.realloc(void* ptr, size_t new_size)
– Egy már foglalt memória újraméretezése.free(void* ptr)
– Egy dinamikusan lefoglalt memóriaterület felszabadítása.
atoi()
, atof()
, atol()
, strtol()
, strtod()
)A cstdlib
könyvtár számos függvényt tartalmaz, amelyek számokká alakítják a karakterláncokat.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
char strInt = "123";
char strFloat = "45.67";
int szam = atoi(strInt);
double lebegopontos = atof(strFloat);
cout << "Egész szám: " << szam << endl;
cout << "Lebegőpontos szám: " << lebegopontos << endl;
return 0;
}
atoi(const char* str)
– char
karakterláncot egész számmá alakít.atof(const char* str)
– char
karakterláncot lebegőpontos számmá alakít.atol(const char* str)
– char
karakterláncot hosszú egész számmá alakít.strtol(const char* str, char** endptr, int base)
– Karakterláncot hosszú egésszé alakít adott számrendszer alapján.
exit()
, abort()
, system()
)A cstdlib
könyvtár lehetőséget ad arra is, hogy kilépjünk a programból vagy külső parancsokat futtassunk.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
cout << "Program kilép 0 exit kóddal..." << endl;
exit(0); // Program normál befejezése
return 0;
}
exit(int status)
– Azonnali kilépés a programból a megadott visszatérési kóddal.abort()
– Azonnali kilépés, rendszerhiba esetén használható.system(const char* command)
– Külső program vagy rendszerparancs futtatása.Példa a system()
függvényre:
#include <cstdlib>
int main() {
system("dir"); // Windows alatt futtatja a "dir" parancsot
return 0;
}
Az alábbi program véletlenszámokat generál, dinamikusan lefoglal egy tömböt, és kiírja az elemeit.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(NULL)); // Véletlenszám-generátor inicializálása
int meret = 10;
int* tomb = (int*)malloc(meret * sizeof(int));
if (tomb == NULL) {
cout << "Memóriafoglalási hiba!" << endl;
return 1;
}
// Véletlenszámok feltöltése
for (int i = 0; i < meret; i++) {
tomb = rand() % 100;
cout << tomb << " ";
}
cout << endl;
free(tomb); // Memória felszabadítása
return 0;
}
A cstdlib
könyvtár rengeteg hasznos függvényt tartalmaz, amelyek elengedhetetlenek véletlenszám-generáláshoz, memóriakezeléshez, konverziókhoz és rendszerparancsok futtatásához. Használata egyszerű, de mindig figyeljünk a memória kezelésére és a megfelelő inicializálásra.
Ha C++-ban dolgozol, érdemes átgondolni a modernebb alternatívákat, például std::random
, std::unique_ptr
, és std::stoi
használatát.