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

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


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


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

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)

参考资料:
有意思的函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/352515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【vue3源码】vue源码探索之旅:项目介绍

简言 记录下我眼中的vue源码项目。 gitHubvue3项目仓库 项目要求: vue版本 3.4.15nodeV18.12.0以上使用pnpm包管理器vitest测试框架Vue3 vue3是渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的 Web 前端框架。 Vue 是一个框架,也是一个生态。其功能覆盖了大部分…

Spark运行架构以及容错机制

Spark运行架构以及容错机制 1. Spark的角色区分1.1 Driver1.2 Excuter 2. Spark-Cluster模式的任务提交流程2.1 Spark On Yarn的任务提交流程2.1.1 yarn相关概念2.1.2 任务提交流程 2.2 Spark On K8S的任务提交流程2.2.1 k8s相关概念2.2.2 任务提交流程 3. Spark-Cluster模式的…

HBase入门:运行机制

文章目录 HBase 系统架构客户端ZooKeeper 服务器Master 主服务器Region 服务器 Region 服务器工作原理用户读写数据的过程缓存的刷新StoreFile合并 Store 的工作原理HLog 的工作原理 HBase 系统架构 HBase 的系统架构包括客户端、ZooKeeper 服务器、Master 主服务器、Region服…

Linux文本三剑客---grep

grep&#xff08;从文本或字符串种过滤特定内容。&#xff09; 格式&#xff1a;Usage: grep [OPTION]... PATTERNS [FILE]... 常用选项&#xff1a; -E 等价于 egrep 扩展正则 -i 忽略大小写 -w 匹配单词 -o 仅显示匹配内容 -r 递归匹配 -c 统计匹配的行数 -v 取反 -n 行号 -A…

vue2 事件总线

原图下载&#xff1a;https://download.csdn.net/download/weixin_47401101/88788636

如何在Shopee平台上进行宠物类目的选品丨shopee宠物选品

在Shopee平台上进行宠物类目的选品是一个重要的任务&#xff0c;它直接关系到卖家的销售业绩和市场竞争力。为了成功选择适合的宠物用品&#xff0c;在选品过程中&#xff0c;卖家可以遵循以下策略&#xff1a; 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#…

ZYNQ AC7020C的“点LED”实验

一、创建 Vivado 工程 1、启动 Vivado 2、在 Vivado 开发环境里点击“Create New Project”&#xff0c;创建一个新的工程 3、弹出一个建立新工程的向导&#xff0c;点击“Next” 4、在弹出的对话框中输入工程名和工程存放的目录。需要注意工程路径“Project location”不能有…

瑞丽杂志引领潮流,VOSS眼镜概念店开启奢华新纪元!

近日&#xff0c;由《瑞丽》杂志社举办的2023第4届瑞丽轻奢品牌大赛&#xff0c;以“轻奢•悦藏”为主题的大赛已圆满结束&#xff0c;VOSS眼镜荣获&#xff1a;2023瑞丽轻奢品牌大赛「轻奢时尚风格奖」&#xff0c;作为眼镜行业唯一获此奖项的品牌&#xff0c;VOSS眼镜对此表示…

C++初阶入门之命名空间和缺省参数的详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂 目录 一.前言 二.命名空间 2.1命名冲突的例子 2.2解决方案 2.3命…

QT发生弹出警告窗口

QTC开发程序弹出警告窗口&#xff0c;如上图 实施代码&#xff1a; #include <QMessageBox> int main() {// 在发生错误的地方QMessageBox::critical(nullptr, "错误", "发生了一个错误&#xff0c;请检查您的操作。");}上面的文字可以更改&#x…

(2024,预训练和微调扩散,图编码器,图特征与CLIP特征对齐)场景图到图像合成:集成 CLIP 指导与扩散模型中的场景图条件

Scene Graph to Image Synthesis- Integrating CLIP Guidance with Graph Conditioning in Diffusion Models 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 扩…

配置ARP安全综合功能示例

组网图形 ARP安全简介 ARP&#xff08;Address Resolution Protocol&#xff09;安全是针对ARP攻击的一种安全特性&#xff0c;它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击&#xff0c;还可以…

Servet的基础学习

Servet的基础学习 servet的简单介绍 Servlet 是运行在 Web 服务器或应用服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#xff0c;您可以收集来自网页表单的用户输入&#xff0…

插槽(64-67)

文章目录 插槽1.插槽 - 默认插槽(组件内可以定制一处结构)2.插槽 - 后备内容&#xff08;默认值&#xff09;3.插槽 - 具名插槽(组件内可以定制多处结构)4.作用域插槽(插槽的一个传参语法) 插槽 插槽分类:默认插槽和具名插槽 1.插槽 - 默认插槽(组件内可以定制一处结构) 作用…

PyTorch初探:基本函数与案例实践

正文&#xff1a; 在熟悉了PyTorch的安装和环境配置后&#xff0c;接下来让我们深入了解PyTorch的基本函数&#xff0c;并通过一个简单的案例来实践这些知识。 1. 基本函数 PyTorch的核心是张量&#xff08;Tensor&#xff09;&#xff0c;它类似于多维数组&#xff0c;但可以…

2024年最热门的十个AI对话聊天模型网站

1、百度文言一心 文言一心”是一个基于百度自研的ERNIE模型的聊天机器人。 “文心一言”是百度依托飞桨、文心大模型的技术研发的知识增强大语言模型&#xff0c;能够与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮助人们获取信息、知识和灵感…

Springboot注解@Aspect(二)JoinPoint 使用详解

目录 JoinPoint 的作用 JoinPoint 常用方法 示例 JoinPoint 的子类和关联类 JoinPoint 的作用 在 Spring AOP 中&#xff0c;JoinPoint 接口代表了一个程序执行的点&#xff0c;比如方法执行或异常处理。当使用 AOP 通知&#xff08;Advice&#xff09;时&#xff0c;你可以…

环形链表的检测与返回

环形链表 王赫辰/c语言 - Gitee.com 快慢指针的差距可以为除一以外的数吗&#xff1f;不可以如果差奇数则无法发现偶数环&#xff0c;是偶数无法发现奇数环&#xff0c;本题思路为指针相遇则为环&#xff0c;而以上两种情况会稳定差一&#xff0c;导致指针永不相遇 最终返回…

uniapp组件库Line 线条 的适用方法

目录 #平台差异说明 #基本使用 #线条类型 1.3.7 #兼容性 #API #Props 此组件一般用于显示一根线条&#xff0c;用于分隔内容块&#xff0c;有横向和竖向两种模式&#xff0c;且能设置0.5px线条&#xff0c;使用也很简单。 #平台差异说明 AppH5微信小程序支付宝小程序百…

阿里云幻兽帕鲁服务器4核16G配置报价

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…