(笔记总结)C/C++语言的常用库函数(持续记录,积累量变)

news/2024/4/16 0:52:15

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

C/C++语言的常用库函数

  • 一、<stdio.h>——标准输入/输出库
    • 1、scanf()与printf()——输入与输出
    • 2、fgets() ——输入字符串
    • 3、putchar()——输出一个字符
    • 4、getchar()——输入一个字符并将其转化为整型
    • 5、sprintf()——将输出的字符串保存到指定字符串
    • 6、sscanf()——将输入的字符串保存到指定字符串
  • 二、< iostream>——C++标准库
    • 1、cin >>——读取一个变量
    • 2、cin.get()——读取一个字符
    • 3、cin.get()——读取一行 & 指定读取最大位数 & 指定结束符(默认换行)
    • 4、cin.getline——输入一行 且 指定结束符(默认换行)
    • 5、cin.ignore——清空输入缓冲区
  • 三、<string.h>——字符串处理函数库
      • 字符串处理函数:1-4
    • 1、strcpy()——复制字符串
    • 2、strncpy()——复制指定位数字符串
    • 3、strcat()——连接字符串
    • 4、strncat()——复制指定位数字符串
      • 字符串比较函数:5-6
    • 5、strcmp()——比较字符串
    • 6、strncmp()——比较指定位数字符串
      • 字符串查找函数:7-13
    • 7、strchr()——返回 字符c 在字符串s 第一次出现的地址
    • 8、strcspn()——返回 字符串s2 在字符串s1 第一次出现的下标
    • 9、strspn()——返回 字符串s2 在字符串s1 第一个未出现字符的下标
    • 10、strpbrk()——返回 字符串s2 在字符串s1 第一次出现的地址
    • 11、strrchr()——返回 字符c 在字符串s 最后出现的地址
    • 12、strstr()——返回 字符串s2 在字符串s1 第一次出现的地址
    • 13、strtok()——返回 字符c 在字符串s 第一次出现的地址 并将该位置的字符设为'\0'
      • 内存处理函数:14-18
    • 14、memcpy()——将s2的前n位字符 覆盖 s1的前n位字符
    • 15、memmove()——先将s2里的前n位字符复制到 一个临时数组,然后再覆盖s1的前n位字符
    • 16、memcmp()——与strncmp相同,只不过memcmp不止可以处理字符串
    • 17、memchr()——与strchr相同,只不过需要用void*定义的指针去接收地址
    • 18、memset()——将c覆盖s的前n位,返回指向s的void型指针
    • 19、strerror ()——返回指向错误号字符串的指针
    • 20、strlen()——返回字符串结束符前面字符的个数
    • 21、getline()——输入一行字符串,遇到换行符停止,保存时不保存换行符
  • 四、<stdlib.h>——通用工具函数库
    • 1、strtod()——将字符串转为双精度浮点数
    • 2、strtol()——将字符串转为长整型数
    • 3、strtoul()——将字符串转为无符号长整形数
    • 4、exit() 和 atexit()——程序终止与程序反向运行
      • 1. exit()
      • 2. atexit()
  • 五、<ctype.h>——字符处理函数库
    • 1、isblank()——判断是否为空格
    • 2、isdigit()——判断是否为数字
    • 3、isalpha()——判断是否为大写字母 或 小写字母
    • 4、isalnum()——判断大写字母 或 小写字母 或 数字
    • 5、isxdigit()——判断是否为十六进制的数字
    • 6、islower()——判断是否为小写字母
    • 7、isupper()——判断是否为大写字母
    • 8、tolower()——将大写字母 改为 小写
    • 9、toupper()——将小写字母 改为 大写
    • 10、isspace()——判断是否为空白字符 换行符('\n')空格符(' ')换页符('\f')回车符(‘\r’)水平制表符('t')垂直制表符('\v')
    • 11、iscntrl()——判断是否为空白字符 水平制表符('\t')垂直制表符('\v')换页符('\f')报警符(‘\a’)退格符(\b')回车符(‘\r’)换行符('\n')空字符('\0')
    • 12、ispunct()——判断是否为空格 数字 字母以外的 可打印字符
    • 13、isprint()——判断是否为 大写字母 小写字母 数字 标点符号 空格符
    • 14、sgraph()——判断是否为 大写字母 小写字母 数字 标点符号
  • 六、<Windows.h>——windows操作工具
    • 1、FindWindow()——返回的窗口的句柄
    • 2、GetForegroundWindow()——获取当前的活动窗口
    • 3、SetForegroundWindow()——设置当前的活动窗口
    • 4、keybd_event()——模拟按键

一、<stdio.h>——标准输入/输出库

1、scanf()与printf()——输入与输出

  1. scanf()与printf()中格式说明符几乎相同的一部分
格式说明符解释
%d用来输入和输出int
%ld用来输入和输出long int
%lld用来输入和输出long long int
%hd用来输入和输出short
%i用来输入和输出有符号十进制整数
%u用来输入和输出无符号十进制整数
%lu用来输入和输出无符号十进制长整数
%llu用来输入和输出无符号十进制长长整数
%hu用来输入和输出无符号短十进制整数
%o用来输入和输出八进制整数
%lo用来输入和输出长八进制整数
%ho用来输入和输出短八进制整数
%#o用来输出八进制整数,数字前有0
%x用来输入和输出十六制整数,字母小写
%#x用来输出十六制整数,字母小写,数字前有0x
%lx用来输入和输出长十六制整数,字母小写
%X用来输入和输出十六制整数,字母大写
%#X用来输出十六制整数,字母大写 ,数字前有0X
%lX用来输入和输出长十六制整数,字母大写
%c用来输入和输出单个字符
%s用来输入和输出一串字符串
输入时遇空格,制表符或换行符结束
输出时连格式说明符一起输出
printf("%s","%d%f",a,b);输出 %d%f
%f用来输入和输出float,输出double
%lf用来输入和输出double(double输出用%f和%lf都可以)
%Lf用来输入和输出long double
%e用来输入和输出指数,字母小写
%le用来输入和输出长指数,字母小写
%E用来输入和输出指数,字母大写
%lE用来输入和输出长指数,字母大写
%g用来输入和输出指数或float(输出最短的一种),字母小写
%lg用来输入和输出长指数或double(输出最短的一种),字母小写
%G用来输入和输出指数或float(输出最短的一种),字母大写
%lG用来输入和输出长指数或double(输出最短的一种),字母大写
  1. scanf()独有
格式说明符解释
%*(所有类型),如%*d用来输入一个数,字符或字符串而不赋值(跳过无关输入)
如scanf(“%d%*c%d”,&a,&b);
这样就可以只将1+2中的1和2赋值给a和b。
%m(所有类型),其中m为常数限定输入范围,如scanf(“%4d”,&a)时输入123456,只把1234赋值给a
,(逗号)无实际用处,仅用于美观。如scanf(“%d,%d,%d”,&a,&b,&c);
-(横杠) :(冒号)方便日期等输入,但不赋值
scanf(“%d-%d-%d”,&a,&b,&c);需输入2018-11-20
scanf(“%d:%d:%d”:&a,&b,&c);需输入2018:11:20
所有字符串,符号(包括空格)
数字(不与输入数相挨)
任何所写的东西都必须如横杠一般先输入(不赋值),不然系统报错
scanf(“%d 456 %d”,&a,&b);
需输入 1 456 7(1和7之间有 456 (前后各一个空格))
结果为a=1 b=7
  1. printf()独有
格式说明符解释
%m.nd %-m.nd
(m和n为常数)
m用于在d位数小于m时补空格(右对齐)d位数大于m时忽略
如%5d,输出123, 123(123前面两个空格)
.n用于在d位数小于n时补0(右对齐)d位数大于n时忽略
如%.5d,输出123, 00123(123前面两个0)
%-m.nd则为左对齐
%m.nf %m.nlf %m.nLf
%-m.nf %-m.nlf %-m.nLf
m用于在小数位数小于m时补空格(右对齐)
小数位数大于m时忽略 (小数点算一位)
如%6f 需输出3.14 结果为 3.14(3.14前面两个空格)
.n用于控制小数位数 小数部分长度大于n则四舍五入
小数部分长度小于于n则补0
如%.6f 需输出3.14 结果为3.140000
如%6f 需输出3.1415926 结果为3.141593
%-m.nf %-m.nlf %-m.nLf 则为左对齐
%m.ns %-m.nsm用于在字符串位数小于m时补空格(右对齐)字符串位数大于m时忽略
如%5s,输出abc, abc(abc前面两个空格)
.n用于控制字符串位数 长度大于n则仅输出前n位
字符串长度小于于n时忽略
如%.6s 需输出abcdefg 结果为abcdef
如%6f 需输出abc 结果为abc
%-m.ns则为左对齐
%mc %-mcm限制char的输出长度 当m>1时,在左方补m-1个空格
%-mc则为左对齐
%m.ne %-m.ne
%m.nE %-m.nE
m用于控制指数长度,在QT中,指数部分占五位(如 e+001 )
位数小于m时左方补空格 位数大于m时忽略
如printf(“%15.5e”,a); 设a为123.456789
结果为 1.23457e+002(三个空格)
.n用于控制小数长度 小数部分长度大于n则四舍五入
小数部分长度小于于n则补0
如printf(“%15.5e”,a); 设a为123.456789
结果为 1.23457e+002(三个空格)%-m.ne %-m.nE则为左对齐
%*(整型)如%d
%-
(整型)
在输出项中规定整型数据的宽度,少于限制补空格,大于忽略
如printf(“%d”,a,b);
a=5 b=123
结果为 123(前面有两个空格)
%-
(整型) 左对齐
%0*(整型)在输出项中规定整型数据的宽度,少于限制补0,大于忽略
如printf(“%0*d”,a,b);
a=5 b=123
结果为 00123
注意printf()中的运算是从右至左,而输出是从做左至右
如a=1,printf(“%d %d %d”,a++,a++,a++);
结果为3 2 1

2、fgets() ——输入字符串

函数解释
char *fgets(char *s, int n,PILE *stream);将输入的字符串存在s中,只保存n-1位,stream是输入流,一般用stdin
注意n一定不大于数组。
输入如果遇见换行符或文件结束符会提前停止输入,但换行符也会被保存
读入结束后,一个空字符(‘\0’)被保存在数组的结尾

char a[10];
fgets(a,10,stdin);
printf("%s",a);
输入 A+B=C=de=f/e
输出 A+B=C=d
e

3、putchar()——输出一个字符

函数解释
int putchar(int c);输出一个字符

4、getchar()——输入一个字符并将其转化为整型

函数解释
int getchar(void);输入一个字符并将其转化为整型

5、sprintf()——将输出的字符串保存到指定字符串

函数解释
int sprintf(char *s,“内容%d”,int c);除了是将输出的字符串保存到字符串*s以外 与printf()没什么区别
%d可以为其他格式说明符

6、sscanf()——将输入的字符串保存到指定字符串

函数解释
int sscanf(char *s,“内容%d”,int c);除了内容是从字符串*s输入的以外 其他和scanf没什么区别

参考资料:
(超全,超经典)scanf()函数与printf()中的格式说明符
(超全,超经典)字符串函数与易错点

二、< iostream>——C++标准库

1、cin >>——读取一个变量

cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。

在理解cin功能时,不得不提标准输入缓冲区。当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6。

cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据。

	#include <iostream>using namespace std;int main(){char a;int b;float c;cin>> a >> b >> c;cout << a << " " << b << " " << c << " " << endl;system("pause");return 0;}

程序输入:d 56 67.777[回车]
在这里插入图片描述
使用cin读取键盘输入时,难免发生错误,一旦出错,cin将设置条件状态(condition state)。

条件状态标识符号含义
goodbit无错误
eofbit已到达文件尾
failbit非致命的输入/输出错误,可挽回
badbit致命的输入/输出错误,无法挽回

若在输入输出类里.需要加iOS::标识符号。与这些条件状态对应的就是设置、读取和判断条件状态的流对象的成员函数。

他们主要有:
s.eof():若流s的eofbit置位,则返回true;
s.fail():若流s的failbit置位,则返回true;
s.bad():若流s的badbit置位,则返回true;
s.good():若流s的goodbit置位,则返回true;
s.clear(flags):清空状态标志位,并将给定的标志位flags置为1,返回void。
s.setstate(flags):根据给定的flags条件状态标志位,将流s中对应的条件状态位置为1,返回void。
s.rdstate():返回流s的当前条件状态,返回值类型为strm::iostate。strm::iostate 机器相关的整形名,由各个iostream类定义,用于定义条件状态。

#include <iostream>
using namespace std;int main()
{
char ch, str[20]; cin.getline(str, 5);cout<<"flag1:"<<cin.good()<<endl;    // 查看goodbit状态,即是否有异常cin.clear();                         // 清除错误标志cout<<"flag1:"<<cin.good()<<endl;    // 清除标志后再查看异常状态cin>>ch; cout<<"str:"<<str<<endl;cout<<"ch :"<<ch<<endl;system("pause");return 0;
}

程序输入:12345[回车]
在这里插入图片描述
可以看出,因输入缓冲区未读取完造成输入异常,通过clear()可以清除输入流对象cin的异常状态。不影响后面的cin>>ch从输入缓冲区读取数据。因为cin.getline读取之后,输入缓冲区中残留的字符串是:5[换行],所以cin>>ch将5读取并存入ch,打印输入并输出5。

如果将clear()注释,cin>>ch;将读取失败,ch为空。
cin.clear()等同于cin.clear(ios::goodbit);因为cin.clear()的默认参数是ios::goodbit,所以不需显示传递,故而你最常看到的就是:
cin.clear()。

2、cin.get()——读取一个字符

#include <iostream>
using namespace std;int main()
{char a;char b;a = cin.get();cin.get(b);cout << a << b << endl;system("pause");return 0;
}

程序输入:3456[回车]
在这里插入图片描述

Tips:空格与回车也算一个字符

3、cin.get()——读取一行 & 指定读取最大位数 & 指定结束符(默认换行)

istream& get ( char* s, streamsize n ) // 读取一行,指定读取n个数
istream& get ( char* s, size_t n, streamsize delim ) // 读取一行,指定读取n个数,且指定结束字符

空格不会终止输入,碰到换行符才会停止输入

#include <iostream>
using namespace std;int main()
{char array[20] = { NULL };cin.get(array, 20);cout << array ;system("pause");return 0;
}

程序输入:3456 789[回车]
在这里插入图片描述

#include <iostream>
using namespace std;int main()
{char array[20] = { NULL };cin.get(array,20,'b');cout << array ;system("pause");return 0;
}

程序输入:adgd yuibklohg[回车]
在这里插入图片描述

4、cin.getline——输入一行 且 指定结束符(默认换行)

istream& getline(char* s, streamsize count); // 默认以换行符结束
istream& getline(char* s, streamsize count, char delim); // 读取一行,指定读取n个数,且指定结束字符

使用方法和cin.get相同
cin.getlinecin.get的区别是,cin.getline不会将结束符或者换行符残留在输入缓冲区中。

5、cin.ignore——清空输入缓冲区

从上文中可以看出,上一次的输入操作很有可能是输入缓冲区中残留数据,影响下一次的输入。
那么如何解决这个问题呢?
自然而然,我们想到了在进行输入时,对输入缓冲区进行清空和状态条件的复位。条件状态的复位使用clear(),清空输入缓冲区应该使用:

函数原型:istream &ignore( streamsize num=1, int delim=EOF );
函数作用:跳过输入流中n个字符,或在遇到指定的终止字符时提前结束(此时跳过包括终止字符在内的若干字符)。

使用示例如下:

#include <iostream>
using namespace std;int main()
{char str1[20]={NULL},str2[20]={NULL};cin.getline(str1,5);cin.clear();  // 清除错误标志   cin.ignore(numeric_limits<std::streamsize>::max(),'\n'); //清除缓冲区的当前行cin.getline(str2,20);cout<<"str1:"<<str1<<endl;cout<<"str2:"<<str2<<endl;system("pause");return 0;
}

程序输入:12345[回车]success[回车]
在这里插入图片描述

注意:
(1)程序中使用cin.ignore清空了输入缓冲区的当前行,使上次的输入残留下的数据没有影响到下一次的输入,这就是ignore()函数的主要作用。其中,numeric_limits::max()不过是头文件定义的流使用的最大值,你也可以用一个足够大的整数代替它。
如果想清空输入缓冲区,去掉换行符,使用:
cin.ignore(numeric_limits< std::streamsize>::max()); 清除cin里所有内容。
(2)cin.ignore();当输入缓冲区没有数据时,也会阻塞等待数据的到来。

参考资料:
C++中cin的详细用法
(超全,超经典)字符串函数与易错点
C++ cin.get用法(详解版)

三、<string.h>——字符串处理函数库

字符串处理函数:1-4

1、strcpy()——复制字符串

在这里插入图片描述

2、strncpy()——复制指定位数字符串

3、strcat()——连接字符串

在这里插入图片描述

4、strncat()——复制指定位数字符串

在这里插入图片描述

字符串比较函数:5-6

5、strcmp()——比较字符串

在这里插入图片描述

6、strncmp()——比较指定位数字符串

在这里插入图片描述

字符串查找函数:7-13

7、strchr()——返回 字符c 在字符串s 第一次出现的地址

在这里插入图片描述

8、strcspn()——返回 字符串s2 在字符串s1 第一次出现的下标

在这里插入图片描述

9、strspn()——返回 字符串s2 在字符串s1 第一个未出现字符的下标

在这里插入图片描述

10、strpbrk()——返回 字符串s2 在字符串s1 第一次出现的地址

在这里插入图片描述

11、strrchr()——返回 字符c 在字符串s 最后出现的地址

在这里插入图片描述

12、strstr()——返回 字符串s2 在字符串s1 第一次出现的地址

在这里插入图片描述

13、strtok()——返回 字符c 在字符串s 第一次出现的地址 并将该位置的字符设为’\0’

在这里插入图片描述
图片内程序有些不清楚,下面重新打了一遍

char a[13]="4cabc56c78c9";
char *c=strtok(a,"ab");
//搜索s2中的第一个字符,将s1中的该字符覆盖为'\0',strtok函数保存标号后‘\0’的地址,返回标号第一个字符地址。
printf("*%s*\n",c);
c=strtok(nullptr,"z");
//返回搜索起始字符地址,保存nullptr。
printf("*%s*\n",c);
c=strtok(nullptr,"c");
//当strtok保存的本来就是nullptr,返回nullptr。
printf("*%s*\n",c);
for(int n=0;n<13;n++)
printf("%c",a[n]);

在这里插入图片描述

内存处理函数:14-18

14、memcpy()——将s2的前n位字符 覆盖 s1的前n位字符

在这里插入图片描述

15、memmove()——先将s2里的前n位字符复制到 一个临时数组,然后再覆盖s1的前n位字符

在这里插入图片描述

16、memcmp()——与strncmp相同,只不过memcmp不止可以处理字符串

在这里插入图片描述

17、memchr()——与strchr相同,只不过需要用void*定义的指针去接收地址

在这里插入图片描述

18、memset()——将c覆盖s的前n位,返回指向s的void型指针

在这里插入图片描述

19、strerror ()——返回指向错误号字符串的指针

在这里插入图片描述

20、strlen()——返回字符串结束符前面字符的个数

在这里插入图片描述

21、getline()——输入一行字符串,遇到换行符停止,保存时不保存换行符

在这里插入图片描述

参考资料:
(超全,超经典)字符串函数与易错点
C++中cin的详细用法

四、<stdlib.h>——通用工具函数库

1、strtod()——将字符串转为双精度浮点数

在这里插入图片描述

2、strtol()——将字符串转为长整型数

在这里插入图片描述

3、strtoul()——将字符串转为无符号长整形数

在这里插入图片描述

4、exit() 和 atexit()——程序终止与程序反向运行

1. exit()

函数exit强制终止程序的运行。

2. atexit()

在程序结束时(包括被exit()打断的)按照相反的顺序运行函数

#inc2024.01.22)
# 一、lude<stdio.h>
#include<stdlib.h>void a(void)
{printf("%s\n","this is a;");
}void b(void)
{printf("%s\n","this is b;");
}void c(void)
{printf("%s\n","this is c;");
}int main()
{printf("%s\n","this is main first;");//在程序结束时按照相反的顺序运行函数atexit(a);atexit(b);atexit(c);printf("%s\n","this is main;");exit(EXIT_SUCCESS);printf("%s\n","this is main 2;");
}

结果为

this is main first;
this is main;
this is c;
this is b;
this is a;

参考资料:
(超全,超经典)字符串函数与易错点
(学习日记)2024.01.20:通用工具库stdlib.h里好玩的函数

五、<ctype.h>——字符处理函数库

1、isblank()——判断是否为空格

在这里插入图片描述

2、isdigit()——判断是否为数字

在这里插入图片描述

3、isalpha()——判断是否为大写字母 或 小写字母

在这里插入图片描述

4、isalnum()——判断大写字母 或 小写字母 或 数字

在这里插入图片描述

5、isxdigit()——判断是否为十六进制的数字

在这里插入图片描述

6、islower()——判断是否为小写字母

在这里插入图片描述

7、isupper()——判断是否为大写字母

在这里插入图片描述

8、tolower()——将大写字母 改为 小写

在这里插入图片描述

9、toupper()——将小写字母 改为 大写

在这里插入图片描述

10、isspace()——判断是否为空白字符 换行符(‘\n’)空格符(’ ‘)换页符(’\f’)回车符(‘\r’)水平制表符(‘t’)垂直制表符(‘\v’)

在这里插入图片描述

11、iscntrl()——判断是否为空白字符 水平制表符(‘\t’)垂直制表符(‘\v’)换页符(‘\f’)报警符(‘\a’)退格符(\b’)回车符(‘\r’)换行符(‘\n’)空字符(‘\0’)

在这里插入图片描述

12、ispunct()——判断是否为空格 数字 字母以外的 可打印字符

在这里插入图片描述

13、isprint()——判断是否为 大写字母 小写字母 数字 标点符号 空格符

在这里插入图片描述

14、sgraph()——判断是否为 大写字母 小写字母 数字 标点符号

在这里插入图片描述

参考资料:
(超全,超经典)字符串函数与易错点

六、<Windows.h>——windows操作工具

Windows.h是一个重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。

这些头文件中最重要的和最基本的是:

  • Windef.h 基本数据类型定义。
  • Winnt.h 支持Unicode的类型定义。
  • Winbase.h Kernel(内核)函数。
  • Winuser.h 用户界面函数。
  • Wingdi.h 图形设备接口函数。

这些头文件定义了Windows的所有资料型态、函数调用、资料结构和常数识别字,它们是Windows文件中的一个重要部分。

1、FindWindow()——返回的窗口的句柄

寻找窗口 类名称 标题 spy++获取 返回的窗口的句柄

2、GetForegroundWindow()——获取当前的活动窗口

获取当前的活动窗口

3、SetForegroundWindow()——设置当前的活动窗口

设置当前的活动窗口

4、keybd_event()——模拟按键

模拟按键

(其中
ESC键VK_ESCAPE (27)
回车键:VK_RETURN (13)
TAB键:VK_TAB (9)
Caps Lock键:VK_CAPITAL (20)
Shift键:VK_SHIFT (16)
Ctrl键:VK_CONTROL (17)
Alt键:VK_MENU (18)
空格键:VK_SPACE (32)
退格键:VK_BACK (8)
左徽标键:VK_LWIN (91)
右徽标键:VK_RWIN (92)
鼠标右键快捷键:VK_APPS (93)
Insert键:VK_INSERT (45)
Home键:VK_HOME (36)
Page Up:VK_PRIOR (33)
PageDown:VK_NEXT (34)
End键:VK_END (35)
Delete键:VK_DELETE (46)
方向键(←):VK_LEFT (37)
方向键(↑):VK_UP (38)
方向键(→):VK_RIGHT (39)
方向键(↓):VK_DOWN (40)
F1键:VK_F1 (112)
F2键:VK_F2 (113)
F3键:VK_F3 (114)
F4键:VK_F4 (115)
F5键:VK_F5 (116)
F6键:VK_F6 (117)
F7键:VK_F7 (118)
F8键:VK_F8 (119)
F9键:VK_F9 (120)
F10键:VK_F10 (121)
F11键:VK_F11 (122)
F12键:VK_F12 (123)
Num Lock键:VK_NUMLOCK (144)
小键盘0:VK_NUMPAD0 (96)
小键盘1:VK_NUMPAD1 (97)
小键盘2:VK_NUMPAD2 (98)
小键盘3:VK_NUMPAD3 (99)
小键盘4:VK_NUMPAD4 (100)
小键盘5:VK_NUMPAD5 (101)
小键盘6:VK_NUMPAD6 (102)
小键盘7:VK_NUMPAD7 (103)
小键盘8:VK_NUMPAD8 (104)
小键盘9:VK_NUMPAD9 (105)
小键盘。:VK_DECIMAL (110)
小键盘*:VK_MULTIPLY (106)
小键盘+:VK_ADD (107)
小键盘-:VK_SUBTRACT (109)
小键盘/:VK_DIVIDE (111)
Pause Break键:VK_PAUSE (19)
Scroll Lock 键 :VK_SCROLL(145)

参考资料:
有意思的函数


http://www.ppmy.cn/news/1329810.html

相关文章

1.接口测试基础

一、什么是接口测试&#xff1f;为什么要做接口测试 接口测试是测试项目和项目之间&#xff0c;模块和模块之间&#xff0c;组件和组件之间的数据交互和权限鉴定。 1.前后端分离架构的项目&#xff1a;mock 2.基于安全 3.测试左移&#xff08;尽早介入&#xff09; 二、接…

服务器部署模型访问前端页面

如果你在学校服务器上部署了一个模型&#xff0c;此时他给了你一个url&#xff1a;0.0.0.0:2222,这个时候该如何访问呢&#xff1f; 其实很简单&#xff0c;但是自己弄错了&#xff0c;所以弄了很久。记录一下&#xff0c;自用。 以下ip地址是假的&#xff0c;仅供记录一下。…

ansible模块讲解

三、ansible的ad-hoc命令 ansible 主机名和主机组 -m 模块 -a 指定该模块的参数 ansible node1 -m shell -a echo hello #命令模块 1.shell模块 是ansible模块中最强大的模块&#xff0c;同时也是最不建议使用的模块 shell是不能保证幂等性 : 就是echo会直接覆盖 ansi…

电商平台接口自动化测试框架设计与实现

随着电商行业的快速发展&#xff0c;电商平台接口的稳定性和可靠性变得越来越重要。为了提高测试效率和保证接口质量&#xff0c;越来越多的企业开始采用自动化测试技术。本文将介绍电商平台接口自动化测试框架的设计与实现&#xff0c;并给出相应的代码示例。 一、明确测试需…

详细解读appium怎样连接多台设备

我们在做app自动化的时候&#xff0c;若要考虑兼容性问题&#xff0c;需要跑几台设备&#xff0c;要是一台一台的跑比较耗 时&#xff0c;因此需要考虑使用多线程来同时操作多台设备。 1.我们拿两台设备来模拟操作下&#xff0c;使用&#xff1a;adb devices查看连接状况&…

创建SERVLET

创建SERVLET 要创建servlet,需要执行以下任务: 编写servlet。编译并封装servlet。将servlet部署为Java EE应用程序。通过浏览器访问servlet。编写servlet 要编写servlet,需要扩展HttpServlet接口的类。编写servlet是,需要合并读取客户机请求和返回响应的功能。 读取和处…

低代码技术杂谈

一、探讨低代码的定义 “Low-Code”是什么&#xff1f;身为技术人员听到这种技术名词&#xff0c;咱们第一反应就是翻看维基百科 或者其他相关技术论文&#xff0c;咱们想看维基百科的英文介绍&#xff1a; A low-code development platform (LCDP) provides a development env…

笔记:C++/C编程学习:使用nuget管理c++库的原理

如果要做一个应用程序&#xff0c;我们往往会用到很多第三方库&#xff0c;这时库包管理工具就很重要&#xff0c;如js/npm&#xff0c;c#/nuget&#xff0c;php/composer&#xff0c;jave/maven之类&#xff0c;但vc一直没一个很舒服的包管理工具。很多c第三方库对vc都非常不友…

使用docker以容器方式安装redis

文章目录 获取redis镜像查看本地镜像从官网获取 redis.conf 配置文件创建并启动redis容器 获取redis镜像 docker pull redis #默认获取redis:latest&#xff0c;即最新的镜像 查看本地镜像 docker images 从官网获取 redis.conf 配置文件 创建并进入目录 [rootVM-16-11-ce…

Unity 工厂方法模式(实例详解)

文章目录 在Unity中&#xff0c;工厂方法模式是一种创建对象的常用设计模式&#xff0c;它提供了一个接口用于创建对象&#xff0c;而具体的产品类是由子类决定的。这样可以将对象的创建过程与使用过程解耦&#xff0c;使得代码更加灵活和可扩展。 工厂模式的主要优点如下&…

某知名电器品牌神秘顾客调研

为了解某知名电器品牌的产品品质、服务质量、价格策略等方面的优势和不足&#xff0c;深圳神秘顾客&#xff08;SMS&#xff09;公司受委托开展多家乡镇门店调研。本次调研通过神秘顾客的方式&#xff0c;由深圳神秘顾客&#xff08;SMS&#xff09;公司从累计的16年资源库中筛…

<蓝桥杯软件赛>零基础备赛20周--第15周--快速幂+素数

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

Python语言中的FOR循环

本文将深入探讨Python语言中的FOR循环&#xff0c;包括其语法、应用场景以及一些相关的最佳实践。 FOR循环的基本语法 Python的FOR循环提供了一种便利的方式来遍历序列中的元素&#xff0c;例如列表、元组、字符串等。其基本语法如下&#xff1a; for 变量 in 序列: 循环体…

【ZYNQ入门】第十篇、基于FPGA的图像白平衡算法实现

目录 第一部分、关于白平衡的知识 1、MATLAB 自动白平衡算法的实现 1.1、matlab代码 1.2、测试效果 1.3 测试源图 2、为什么摄像头采集的图像要做白平衡 3、自动白平衡算法总结 4、FPGA设计思路 4.1、实时白平衡的实现 4.2、计算流程优化思路 第二部分、硬件实…

Message queue 消息队列--RabbitMQ 【基础入门】

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《Message queue 消息队列--RabbitMQ 【基础入门…

从0开始学习C++ 第十三课:结构体和联合体

第十三课&#xff1a;结构体和联合体 学习目标&#xff1a; 理解结构体的基本概念和如何定义结构体。学习如何使用结构体来组织相关数据。了解联合体的概念及其与结构体的不同点。 学习内容&#xff1a; 结构体 概念&#xff1a; 结构体是C中用于表示一组相关数据的复合数据…

gitlab上传代码到仓库

要将代码上传到GitLab的仓库中&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;在本地计算机上安装并配置好Git。确保已经创建了一个新的空白仓库或者选择现有的仓库来存放代码。打开命令行工具&#xff08;如Windows系统的CMD、MacOS系统的Terminal&#…

AI对比:ChatGPT和文心一言的区别和差异

目录 一、ChatGPT和文心一言大模型的对比分析 1.1 二者训练的数据情况分析 1.2 训练大模型数据规模和参数对比 1.3 二者3.5版本大模型对比总结 二、ChatGPT和文心一言功能对比分析 2.1 二者产品提供的功能情况分析 2.2 测试一下各种功能的特性 2.2.1 文本创作能力 2.2…

TS的基本类型!

基础类型 1.布尔值 最基本的数据类型就是简单的 true/false 值&#xff0c;在JavaScript 和 TypeScript 里叫做 boolean&#xff08;其它语言中也一样&#xff09;。 let isDone: boolean false; isDone true; // isDone 2 // error 2.数字number 和 JavaScript 一样&am…

Oracle错误代码对应原因

Oracle oracle查询列长度太长ORA-01460ORA-01489ORA-01704 oracle查询列长度太长 查询的varchar的列字符串长度超过4000(取决与oracle怎么计算这个字符的长度) 例如&#xff1a; col like ‘%?%’&#xff0c;如果这个like后面的字符串长度超过4000就会报错&#xff0c;其中…
最新文章