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

news2024/9/22 21:16:27

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


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


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

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.coloradmin.cn/o/1404293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码+视频R语言绘制逆概率加权后的基线表

基于 PS &#xff08;倾向评分&#xff09;的逆概率加权(IPTW )法首先由&#xff32;osenbaum作为一种以模型为基础的直接标准化法提出&#xff0c;属于边际结构模型。简单来说&#xff0c;就是把许多协变量和混杂因素打包成一个概率并进行加权&#xff0c;这样的话&#xff0c…

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin 在 Android双击图片放大移动图中双击点到ImageView区域中心&#xff0c;Kotlin-CSDN博客 基础上&#xff0c;这次使用ScaleGestureDetector检测两根手指的缩放动作&a…

开源人工智能AI壁纸生成器--AI Wallpaper Generator

AI Wallpaper Generator AI Wallpaper Generator&#xff1a;AI Wallpaper Generator | AI Wallpaper Shop GitHub地址&#xff1a;https://github.com/all-in-aigc/aiwallpaper 一款开源人工智能AI壁纸生成器&#xff0c;根据用户的输入提示词&#xff0c;即可生成对应的高…

Python Tornado 实现SSE服务端主动推送方案

一、SSE 服务端消息推送 SSE 是 Server-Sent Events 的简称&#xff0c; 是一种服务器端到客户端(浏览器)的单项消息推送。对应的浏览器端实现 Event Source 接口被制定为HTML5 的一部分。相比于 WebSocket&#xff0c;服务器端和客户端工作量都要小很多、简单很多&#xff0c…

使用Bitcoin Core钱包启动signet测试网络

使用Bitcoin Core钱包启动signet测试网络 为什么要启动测试网络 我们的目的是了解BTC网络的运行原理&#xff0c;学习BTC相关技术。在主网中有较高的手续费和大量的区块数据&#xff0c;不利于我们进行测试。 下载钱包 一定要去可信的网站下载钱包&#xff0c;否则非常容易…

java web servlet 学习系统进度管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web学习系统进度管理系统是一套完善的java web信息管理系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环 境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为…

go语言(十四)----反射

变量的结构 2 举个例子 package mainimport "fmt"type Reader interface {ReadBook() }type Writer interface {WriteBook() }//具体类型 type Book struct {}func (this *Book) ReadBook() {fmt.Println("Read a Book")}func (this *Book) WriteBook() {…

Mac上如何设置映射某个网站站点域名的IP

最近某常用的站点换 IP 了&#xff0c;但是 DNS 服务器还没有修改&#xff0c;这就导致无法访问&#xff08;换 DNS 服务器也不行&#xff09;。在用了一段时间的 IP 访问之后&#xff0c;还是没好&#xff0c;不知道是 DNS 污染还是咋了&#xff0c;所以最后还是手动改一下吧。…

【LeetCode】每日一题 2024_1_22 最大交换(模拟)

文章目录 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01;题目&#xff1a;最大交换题目描述&#xff1a;代码与解题思路 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 几百年没有见到题目描述这么短的题目了&#xff0c;泪目了 题目&#x…

电商平台接口自动化框架实践

技术栈 Mimproxy(抓包)pytestalluredockerJenkinsgitlab 语言&#xff1a;电商API接口自动化实现流程 红色为可实现/尚未完成 绿色为需要人工干预部分 自动生成测试用例模板&#xff08;俩种方式二选一&#xff09;&#xff1a; mimproxy&#xff0c;通过浏览器代理抓包方式…

074:vue+mapbox 加载here地图(影像瓦片图 v2版)

第074个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载here地图的影像瓦片图 v2软件版本。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共77行)相关API参考:专栏目标示例效果

区块链游戏:Web3时代玩法的全新演绎

随着区块链技术的蓬勃发展&#xff0c;区块链游戏正成为数字娱乐领域的一颗璀璨明珠。在Web3时代&#xff0c;区块链游戏以其去中心化、透明、可验证的特性&#xff0c;为玩家带来了全新的游戏体验。本文将深入探讨区块链游戏在Web3时代的崭新玩法和引领未来的可能性。 1. 去中…

GPTBots:利用FlowBot中的卡片和表单信息,提供丰富的客服体验

在当今的数字化时代&#xff0c;客户服务的形式和体验正在经历着前所未有的变革。传统的文字消息方式已经无法满足现代用户对于服务体验的多元化需求。那么&#xff0c;如何才能在这个信息爆炸的时代&#xff0c;让我们的服务方式更加个性化、多样化&#xff0c;从而提供更丰富…

分享一个“产业级,开箱即用”的NLP自然语言处理工具

NLP的全称是Natuarl Language Processing&#xff0c;中文意思是自然语言处理&#xff0c;是人工智能领域的一个重要方向 自然语言处理&#xff08;NLP&#xff09;的一个最伟大的方面是跨越多个领域的计算研究&#xff0c;从人工智能到计算语言学的多个计算研究领域都在研究计…

记录一次从有道云笔记迁移到语雀笔记

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 1、安装git&#xff0c;python3等准备工作 文章中标注python3&#xff0c;为避免与python2 冲…

【正点原子STM32】C语言重点知识(配置MDK支持C99、位操作清零置一、带参数的宏定义、头文件的条件编译和代码条件编译、关键字、结构体指针、代码规范)

一、stdint.h简介 配置MDK支持C99 二、位操作 如何给寄存器某个位赋值&#xff08;清零置一&#xff09; 三、宏定义 带参数的宏定义 四、条件编译 头文件的条件编译和代码条件编译 五、extern声明 六、类型别名(typedef) 类型别名应用 七、结构体 应用举例&#xf…

muduo网络库剖析——线程Thread类

muduo网络库剖析——线程Thread类 前情从muduo到my_muduo 概要框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#xff0c;我们需要抽取其中的精…

CentOS7安装Docker和docekr-compose

CentOS7安装Docker Docker 分为 CE 和 EE 两大版本。CE免费版&#xff0c;EE付费版 Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10 第一步、检测系统环境 如果之前或者安装系统时候自带docker的话可以卸载&#xff08;可选&#xff09; 如果之…

用ChatGPT教学、科研!亚利桑那州立大学与OpenAI合作

亚利桑那州立大学&#xff08;简称“ASU”&#xff09;在官网宣布与OpenAI达成技术合作。从2024年2月份开始&#xff0c;为所有学生提供ChatGPT企业版访问权限&#xff0c;主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品&#xff0c;AS…

Linux下软件安装的命令【RPM,YUM】及常用服务安装【JDK,Tomcat,MySQL】

Linux下软件安装的命令 源码安装 以源代码安装软件&#xff0c;每次都需要配置操作系统、配置编译参数、实际编译&#xff0c;最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。 RPM软件包管理 RPM安装软件的默认路径: 注意&#xff1a; /etc 配置文件放置目录…