前言
在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做内置函数。您可以在程序中引用这些函数。这篇文章是学c++的时候写了一点,后面学ida的时候,遇到了很多c的函数,又加了一点
C 标准库
stdlib.h
提供了许多通用工具函数,包括进程控制、随机数、以及字符串转换等。
abs(n) 计算整数 n 的绝对值div(n, d) 计算 n / d 的商和余数getenv(name) 获取环境变量 name 的值system(command) 调用系统命令 commandrand() 生成一个伪随机整数srand(seed) 使用 seed 初始化随机数发生器exit(status) 正常终止程序并返回状态码 statusabort() 异常终止程序并产生核心转储atoi(s) 将字符串 s 转换为 int 类型整数atol(s) 将字符串 s 转换为 long 类型整数
stdint.h
提供跨平台、固定宽度的整数类型定义,让程序在不同系统、不同编译器下表现一致
int8_t 8 位, 占 1 个字节
int16_t 16 位, 占 2 个字节
int32_t 32 位, 占 4 个字节
int64_t 64 位, 占 8 个字节
uint8_t 8 位无符号, 占 1 个字节
uint16_t 16 位无符号,占 2 个字节
uint32_t 32 位无符号,占 4 个字节
uint64_t 64 位无符号,占 8 个字节
string.h
字符串复制函数strcpy(s1, s2)复制字符串 s2 到字符串 s1strncpy(s1, s2, n)复制字符串 s2 的前 n 个字符到字符串 s1
字符串连接函数strcat(s1, s2)连接字符串 s2 到字符串 s1 的末尾strncat(s1, s2, n)连接字符串 s2 的前 n 个字符到字符串 s1 的末尾
字符串比较函数strcmp(s1, s2)比较字符串 s1 和 s2,完全相等返回 0,不相等返回非 0strncmp(s1, s2, n)比较字符串 s1 和 s2 的前 n 个字符
字符串查找函数strchr(s, c)查找字符 c 在字符串 s 中第一次出现的位置strrchr(s, c)查找字符 c 在字符串 s 中最后一次出现的位置strstr(s1, s2)查找字符串 s2 在字符串 s1 中第一次出现的位置
内存操作函数memset(s, c, n)将字符串 s 的前 n 个字节设置为字符 cmemcpy(s1, s2, n)从字符串 s2 复制 n 个字符到字符串 s1memcmp(s1, s2, n)比较字符串 s1 和 s2 的前 n 个字符
字符串长度函数strlen(s1)返回字符串 s1 的长度
ctype.h
形式:int 函数(int c)
参数:传入的一定是一个字符或者EOF
返回值:满足条件返回非0(true),否则返回0;
int isalnum(int c) 该函数检查所传的字符是否是字母和数字。
int isalpha(int c) 该函数检查所传的字符是否是字母。
int islower(int c) 该函数检查所传的字符是否是小写字母。
int isupper(int c) 该函数检查所传的字符是否是大写字母。
int tolower(int c) 该函数把大写字母转换为小写字母。 //返回ascil码,需要加(char)进行转码
int toupper(int c) 该函数把小写字母转换为大写字母。
int isspace(int c) 该函数检查所传的字符是否是空格。
int ispunct(int c) 该函数检查所传的字符是否是标点符号
stdio.h(standard input & output)
printf
1 | //最常用的转换说明符 |
scanf
scanf("%s", buf); // ⚠️ 遇到空格或者换行符就停,例如输入 "hello world" 只读 "hello"
格式
scanf("%d%d%d",&a,&b,&c)将前三个数与a,b,c分别绑定“*”符
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。如:scanf("%d %*d %d",&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。宽度
用十进制整数指定输入的宽度(即字符数)。例如:scanf("%5d",&a)
输入12345678只把12345赋予变量a,其余部分被截去。又如:scanf("%4d%4d",&a,&b)
输入12345678将把1234赋予a,而把5678赋予b。
gets和puts
1 |
|
系统头文件(非c自带)
win中的标准头文件
windows.h
多线程
桌面应用程序
1 |
|
Unix中的标准头文件
unistd.h(Unix/Linux 系统特有的库)
read
1 | read(int fd, void *buf, size_t count); 通过文件描述符获取数据 |
write
1 | write(int fd, const void *buf, size_t count); |
C++ 标准库(后缀无 .h)
string
1.声明一个C++字符串
string str1默认初始化
str3 = str1复制 str1 到 str3
str3 = str1 + str2连接 str1 和 str2
string s4(n,'c')s4由n个c组成
str3 = str1 + 'c'连接 str1 和 c
str[i]访问字符串中的字符
2.字符串操作函数.size()||.length()返回str3 的总长度
.insert(插入的位置,插入的字符串) 插入字符
.erase(起始下标,删除子字符串的长度) 删除字符
find(待查找的子字符串,开始查找的位置)字符串查找
.substr(起始下标,提取的子字符串的长度) 返回某个子字符串
.back() 返回最后一个字符串
cmath
C++ 内置了丰富的数学函数,可对各种数字进行运算。下表列出了 C++ 中一些有用的内置的数学函数。
在c++中c开头的库对应的是兼容的c库,如cmath对应的是math.h,这时cmath的语法兼容math.h。
正弦sin(),余弦cos(),正切tan()
pow(x,y),x的y次方
sqrt()(square root)返回参数的平方根
log()返回参数的自然对数
abs()/fabs()(absolute value)返回绝对值
floor()返回一个小于或等于传入参数的最大整数
ceil返回大于或者等于指定表达式的最小整数
iomanip(io manipulator)
setbase(n) 设置整数为n进制(n=8,10,16)
setprecision(n) 设置浮点数的有效数字为n位
setw(n) 设置字段宽度为n位
setfill(c) 设置字符填充,c可以是字符常或字符变量
setiosflags(ios::fixed) 设置浮点数以固定的小数位显示
setiosflags(ios::scientific) 设置浮点数以科学计数法表示
setiosflags(ios::left) 输出左对齐
setiosflags(ios::right) 输出右对齐