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_SUCCESS 、EXIT_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 |
バイト文字列を浮動小数点値に変換します |
atoi 、atol 、atoll |
バイト文字列を整数値に変換します |
strtol 、strtoll |
バイト文字列を整数値に変換します |
strtoul 、strtoull |
バイト文字列を符号なし整数値に変換します |
strtof 、strtod 、strtold |
バイト文字列を浮動小数点値に変換します |
ワイド文字列操作
関数 | 使用 |
---|---|
mblen |
次のマルチバイト文字のバイト数を返します。 |
mbtowc |
次のマルチバイト文字をワイド文字に変換します |
wctomb |
ワイド文字をマルチバイト表現に変換します |
mbstowcs |
狭いマルチバイト文字列を広い文字列に変換します |
wcstombs |
幅の広い文字列を幅の狭いマルチバイト文字列に変換します |
その他のアルゴリズムと数学
関数 | 使用 |
---|---|
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