C++ ヘッダー ファイルの概要 - <cstdlib> ヘッダー ファイル

C++ ヘッダー ファイルの概要 -<cstdlib>ヘッダー ファイル

<cstdlib>ヘッドファイル

導入

C++ 標準ライブラリ ヘッダーは、<cstdlib>C++ プログラマによって最も広く使用されているライブラリ ヘッダーです。一連の関数とマクロを定義して、チームやプラットフォーム全体で効率的でパフォーマンスの高い標準化された C++ コードを実現します。

C++ は人気のあるプログラミング言語であり、その人気の本来の理由は、C 言語と互換性があることです。C 言語は、昔も今も人気のある、成熟したプログラミング言語です。互換性があるということは、プログラマがその言語に適応しやすくなることを意味し、さらに重要なことに、C++ 開発者も既存の C コードを活用できるようになります。

プログラマーはコア関数からすべてを再構築する必要はなく、適切なペースで C++ に移行する際に成熟したコード ブロックを再利用できます。具体的には、C 言語の標準ライブラリのヘッダー ファイルを利用できます。<stdlib.h>

現在、C++ cstdlib は、<stdlib.h>元の C++ の拡張バージョンです。

名前空間とマクロ

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

マクロ定数

マクロ定数 使用
EXIT_SUCCESSEXIT_FAILURE プログラム実行の実行状態を示します。
MB_CUR_MAX 現在のロケールにおけるマルチバイト文字の最大バイト数
NULL 実装定義の null ポインタ定数
RAND_MAX std::rand生成される可能な最大の値

タイプ

タイプ 使用
div_t 構造体の型、std::div関数の戻り値
ldiv_t 構造体の型、std::ldiv関数の戻り値
lldiv_t 構造体の型、std::lldiv関数の戻り値
size_t sizeof演算子によって返される符号なし整数型

関数

プロセス制御

関数 使用
abort プログラムの異常終了を引き起こします (クリーンアップなし)
exit 通常のプログラムの終了とクリーンアップを引き起こします
quick_exit 完全なクリーンアップを行わずにプログラムが迅速に終了します。
_Exit クリーンアップを行わずにプログラムを通常終了させます。
atexit std::exit()次の場合に呼び出される関数を登録します。
at_quick_exit Quick_exitが呼び出されたときに呼び出される関数を登録します。
system ホスト環境のコマンド ハンドラーを呼び出します。
getenv 環境変数のリストにアクセスする

メモリ管理

関数 使用
malloc メモリの割り当て
aligned_alloc アラインメントされたメモリを割り当てる
calloc メモリを割り当ててゼロにする
realloc 以前に割り当てられたメモリ ブロックを拡張する
free 以前に割り当てられたメモリの割り当てを解除します

数値文字列の変換

関数 使用
atof バイト文字列を浮動小数点値に変換します
atoiatolatoll バイト文字列を整数値に変換します
strtolstrtoll バイト文字列を整数値に変換します
strtoulstrtoull バイト文字列を符号なし整数値に変換します
strtofstrtodstrtold バイト文字列を浮動小数点値に変換します

ワイド文字列操作

関数 使用
mblen 次のマルチバイト文字のバイト数を返します。
mbtowc 次のマルチバイト文字をワイド文字に変換します
wctomb ワイド文字をマルチバイト表現に変換します
mbstowcs 狭いマルチバイト文字列を広い文字列に変換します
wcstombs 幅の広い文字列を幅の狭いマルチバイト文字列に変換します

その他のアルゴリズムと数学

関数 使用
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

おすすめ

転載: blog.csdn.net/ZH_qaq/article/details/132279981