Introducción a los archivos de encabezado de C++: <cstdlib>
archivos de encabezado
<cstdlib>
archivo principal
Introducción
Los encabezados de biblioteca estándar de C++ <cstdlib>
son los encabezados de biblioteca más utilizados por los programadores de C++. Define un conjunto de funciones y macros para permitir código C++ estandarizado eficiente y de alto rendimiento en todos los equipos y plataformas.
C ++ es un lenguaje de programación popular y la razón original de su auge es que puede ser compatible con el lenguaje C. El lenguaje C era y sigue siendo un lenguaje de programación maduro y popular. La compatibilidad significa que es más fácil para los programadores adaptarse al lenguaje y, lo que es más importante, los desarrolladores de C++ también pueden aprovechar el código C existente.
Los programadores no necesitan reconstruir todo, desde las funciones principales, y pueden reutilizar bloques de código maduros a medida que pasan a C++ a un ritmo razonable. Específicamente, pueden aprovechar los archivos de encabezado de la biblioteca estándar del lenguaje C.<stdlib.h>
Actualmente, cstdlib de C++ es <stdlib.h>
una versión mejorada del C++ original.
espacios de nombres y macros
namespace std {
using size_t = see definition;
using div_t = see definition;
using ldiv_t = see definition;
using lldiv_t = see definition;
}
#define NULL
#define EXIT_FAILURE
#define EXIT_SUCCESS
#define RAND_MAX
#define MB_CUR_MAX
constante macro
constante macro | usar |
---|---|
EXIT_SUCCESS 、EXIT_FAILURE |
Indica el estado de ejecución de la ejecución del programa. |
MB_CUR_MAX |
El número máximo de bytes para un carácter multibyte en la configuración regional actual |
NULL |
constante de puntero nulo definida por la implementación |
RAND_MAX |
std::rand El mayor valor posible generado |
tipo
tipo | usar |
---|---|
div_t |
Tipo de estructura, std::div valor de retorno de función |
ldiv_t |
Tipo de estructura, std::ldiv valor de retorno de función |
lldiv_t |
Tipo de estructura, std::lldiv valor de retorno de función |
size_t |
sizeof el tipo entero sin signo devuelto por el operador |
función
control de procesos
función | usar |
---|---|
abort |
Provoca una terminación anormal del programa (sin limpieza) |
exit |
Provoca la finalización y limpieza normal del programa. |
quick_exit |
Provoca la finalización rápida del programa sin una limpieza completa |
_Exit |
Provoca la terminación normal del programa sin limpieza |
atexit |
registra std::exit() una función que será llamada cuando |
at_quick_exit |
Registre una función que se llamará cuando se llame a quick_exit |
system |
Invocar el controlador de comandos del entorno host |
getenv |
Acceder a la lista de variables de entorno. |
gestión de la memoria
función | usar |
---|---|
malloc |
Asignar memoria |
aligned_alloc |
asignar memoria alineada |
calloc |
Asignar y poner a cero memoria |
realloc |
Expandir un bloque de memoria previamente asignado |
free |
Desasigna la memoria previamente asignada |
Conversión de cadenas numéricas
función | usar |
---|---|
atof |
convierte una cadena de bytes en un valor de coma flotante |
atoi 、atol 、atoll |
Convierte una cadena de bytes en un valor entero |
strtol 、strtoll |
Convierte una cadena de bytes en un valor entero |
strtoul 、strtoull |
convierte una cadena de bytes en un valor entero sin signo |
strtof 、strtod 、strtold |
convierte una cadena de bytes en un valor de coma flotante |
Operaciones de cadena ancha
función | usar |
---|---|
mblen |
Devuelve el número de bytes en el siguiente carácter multibyte |
mbtowc |
Convierta el siguiente carácter multibyte en un carácter ancho |
wctomb |
convierte un carácter ancho a su representación multibyte |
mbstowcs |
convierte una cadena multibyte estrecha en una cadena ancha |
wcstombs |
convierte una cadena ancha en una cadena multibyte estrecha |
Varios algoritmos y matemáticas
función | usar |
---|---|
rand |
生成伪随机数 |
srand |
初始化伪随机数生成器 |
qsort |
对未指定类型的元素的一个范围进行排序 |
bsearch |
在未指定类型的数组中搜索元素 |
abs 、labs 、llabs |
计算整数值的绝对值 |
div 、ldiv 、lldiv |
计算整数除法的商和余数 |
概要
namespace std {
using size_t = ;
using div_t = ;
using ldiv_t = ;
using lldiv_t = ;
}
#define NULL
#define EXIT_FAILURE
#define EXIT_SUCCESS
#define RAND_MAX
#define MB_CUR_MAX
namespace std {
extern "C" using /*c-atexit-handler*/ = void();
extern "C++" using /*atexit-handler*/ = void();
extern "C" using /*c-compare-pred*/ = int(const void* , const void*);
extern "C++" using /*compare-pred*/ = int(const void* , const void*);
// 启动与终止
[[noreturn]] void abort() noexcept;
int atexit(/*c-atexit-handler*/ * func) noexcept;
int atexit(/*atexit-handler*/ * func) noexcept;
int at_quick_exit(/*c-atexit-handler*/ * func) noexcept;
int at_quick_exit(/*atexit-handler*/ * func) noexcept;
[[noreturn]] void exit(int status);
[[noreturn]] void _Exit(int status) noexcept;
[[noreturn]] void quick_exit(int status) noexcept;
char* getenv(const char* name);
int system(const char* string);
// C 标准库内存分配
void* aligned_alloc(size_t alignment, size_t size);
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);
double atof(const char* nptr);
int atoi(const char* nptr);
long int atol(const char* nptr);
long long int atoll(const char* nptr);
double strtod(const char* nptr, char** endptr);
float strtof(const char* nptr, char** endptr);
long double strtold(const char* nptr, char** endptr);
long int strtol(const char* nptr, char** endptr, int base);
long long int strtoll(const char* nptr, char** endptr, int base);
unsigned long int strtoul(const char* nptr, char** endptr, int base);
unsigned long long int strtoull(const char* nptr, char** endptr, int base);
// 多字节/宽字符串及字符转换函数
int mblen(const char* s, size_t n);
int mbtowc(wchar_t* pwc, const char* s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* pwcs, const char* s, size_t n);
size_t wcstombs(char* s, const wchar_t* pwcs, size_t n);
// C 标准库算法
void* bsearch(const void* key, const void* base,
size_t nmemb, size_t size, /*c-compare-pred*/ * compar);
void* bsearch(const void* key, const void* base,
size_t nmemb, size_t size, /*compare-pred*/ * compar);
void qsort(void* base, size_t nmemb, size_t size, /*c-compare-pred*/ * compar);
void qsort(void* base, size_t nmemb, size_t size, /*compare-pred*/ * compar);
// 低质量随机数生成
int rand();
void srand(unsigned int seed);
// 绝对值
int abs(int j);
long int abs(long int j);
long long int abs(long long int j);
float abs(float j);
double abs(double j);
long double abs(long double j);
long int labs(long int j);
long long int llabs(long long int j);
div_t div(int numer, int denom);
ldiv_t div(long int numer, long int denom);
lldiv_t div(long long int numer, long long int denom);
ldiv_t ldiv(long int numer, long int denom);
lldiv_t lldiv(long long int numer, long long int denom);
}
参考
-
https://c-cpp.com/cpp/utility/program.html
-
https://zhuanlan.zhihu.com/p/447992440
-
https://c-cpp.com/cpp/numeric/random.html
-
https://learn.microsoft.com/zh-cn/cpp/standard-library/cstdlib?view=msvc-170
-
https://baike.baidu.com/item/cstdlib/5519425?fr=ge_ala