Introducción a los archivos de encabezado de C++: archivos de encabezado <cstdlib>

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_SUCCESSEXIT_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::randEl mayor valor posible generado

tipo

tipo usar
div_t Tipo de estructura, std::divvalor de retorno de función
ldiv_t Tipo de estructura, std::ldivvalor de retorno de función
lldiv_t Tipo de estructura, std::lldivvalor de retorno de función
size_t sizeofel 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
atoiatolatoll Convierte una cadena de bytes en un valor entero
strtolstrtoll Convierte una cadena de bytes en un valor entero
strtoulstrtoull convierte una cadena de bytes en un valor entero sin signo
strtofstrtodstrtold 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 在未指定类型的数组中搜索元素
abslabsllabs 计算整数值的绝对值
divldivlldiv 计算整数除法的商和余数

概要

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

Supongo que te gusta

Origin blog.csdn.net/ZH_qaq/article/details/132279981
Recomendado
Clasificación