前言
在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做内置函数。您可以在程序中引用这些函数。这篇文章是学c++的时候写了一点,后面学ida的时候,遇到了很多c的函数,又加了一点
C 标准库
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 和 s2strncmp(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
2
3
4
5%s 字符串
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和double) - 标志
1 | 左对齐 "-" e.g. "%-20s" |
- 格式字符串(格式)
1 | [标志][输出最少宽度][.精度][长度]类型 |
scanf
格式
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 | // scanf() |
系统头文件(非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) 输出右对齐