C语言函数大全-- w 开头的函数(2)
C语言函数大全
本篇介绍C语言函数大全-- w 开头的函数
1. wcstok
1.1 函数说明
函数声明 | 函数功能 |
---|---|
wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr); | 用于将一个长字符串拆分成几个短字符串(标记),并返回第一个标记的地址 |
wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim); | 用于将一个长字符串拆分成几个短字符串(标记),并返回第一个标记的地址 |
参数:
- wcs : 被分割的字符串
- delim : 分割符字符串,包含多个字符
- ptr : 指向保存上次调用后的指针的指针,首次调用时需赋值为
NULL
1.2 演示示例
windows 下两个参数的示例:
#include <wchar.h>
#include <stdio.h>int main() {wchar_t str[] = L"Hello, huazie! This is wcstok demo.";wchar_t* token;// 第一次调用token = wcstok(str, L" ,.!?");while (token != NULL) {wprintf(L"%ls\n", token);token = wcstok(NULL, L" ,.!?");}return 0;
}
1.3 运行结果
2. wcstol
2.1 函数说明
函数声明 | 函数功能 |
---|---|
long int wcstol(const wchar_t* str, wchar_t** endptr, int base); | 用于将字符串转换为长整型数字的函数 |
参数:
- str : 要转换的字符串
- endptr : 可选输出参数,指向第一个不能转换成数字字符的字符的指针
- base : 数字基数,介于
2
和36
之间;
当base
参数为0
时,wcstol()
函数会自动检测数字基数:
- 如果输入字符串以
"0x"
或"0X"
开头,则将基数设置为16
。- 如果输入字符串以
"0"
开头,则将基数设置为8
。- 如果不是这些情况,则将基数设置为
10
。
2.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>int main()
{//const wchar_t* str = L"123456";//const wchar_t* str = L"123a456";//const wchar_t* str = L"a123456";const wchar_t* str = L"0xFF";wchar_t* endptr;long int num;//num = wcstol(str, &endptr, 10);num = wcstol(str, &endptr, 0);if (endptr == str)printf("Invalid input.\n");elseprintf("The number is %ld\n", num);return 0;
}
注意: 如果输入字符串无法转换为数字,则
wcstol()
函数返回0
,并将endptr
指向输入字符串的起始位置。所以,在使用wcstol()
函数时,建议检查endptr
和str
是否相同,以确定输入是否有效。
2.3 运行结果
3. wcstoul
3.1 函数说明
函数声明 | 函数功能 |
---|---|
unsigned long int wcstoul(const wchar_t* str, wchar_t** endptr, int base); | 用于将字符串转换为无符号长整型数字 |
参数:
- str : 要转换的字符串
- endptr : 可选输出参数,指向第一个不能转换成数字字符的字符的指针
- base : 数字基数,介于
2
和36
之间;
当base
参数为0
时,wcstol()
函数会自动检测数字基数:
- 如果输入字符串以
"0x"
或"0X"
开头,则将基数设置为16
。- 如果输入字符串以
"0"
开头,则将基数设置为8
。- 如果不是这些情况,则将基数设置为
10
。
3.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>int main()
{const wchar_t* str = L"123a456";wchar_t* endptr;unsigned long int num;num = wcstoul(str, &endptr, 10);if (endptr == str)printf("Invalid input.\n");elseprintf("The number is %lu\n", num);return 0;
}
wcstoul()
函数的用法和 wcstol()
函数类似,这里就不一一列举了
3.3 运行结果
4. wcsxfrm
4.1 函数说明
函数声明 | 函数功能 |
---|---|
size_t wcsxfrm(wchar_t* dest, const wchar_t* src, size_t n); | 将一个 Unicode 字符串转换为一个 “可排序” 的字符串。该新字符串中的字符序列反映了源字符串中的字符顺序和大小写信息,以便进行字典序比较。 |
参数:
- dest : 存储转换后字符串的目标缓冲区
- src: 要转换的源字符串
- n : 目标缓冲区的最大长度
4.2 演示示例
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>#define ARRAY_SIZE 5int main()
{const wchar_t* arr[ARRAY_SIZE] = { L"Tom", L"Alice", L"Huazie", L"David", L"Charlie" };wchar_t sorted_arr[ARRAY_SIZE][50];size_t i;for (i = 0; i < ARRAY_SIZE; i++) {wcsxfrm(sorted_arr[i], arr[i], sizeof(sorted_arr[i]));}// 使用 qsort 对字符串数组排序qsort(sorted_arr, ARRAY_SIZE, sizeof(sorted_arr[0]), wcscmp);// 排序后输出wprintf(L"Sorted array:\n");for (i = 0; i < ARRAY_SIZE; i++) {wprintf(L"%ls\n", sorted_arr[i]);}return 0;
}
在上面的示例代码中,
- 首先,我们定义一个包含
5
个Unicode
字符串的字符串数组arr
,每个字符串代表一个人名; - 然后,定义一个大小为
5x50
的二维字符数组sorted_arr
,用于存储排序后的字符串; - 接着,使用
wcsxfrm()
函数将每个Unicode
字符串转换为可排序字符串,并将结果存储在sorted_arr
数组中; - 再然后,使用
qsort()
函数按字典序对sorted_arr
数组中的字符串进行排序; - 再接着,使用
wprintf()
函数输出排序后的字符串; - 最后结束程序。
4.3 运行结果
5. wctype
5.1 函数说明
函数声明 | 函数功能 |
---|---|
wctype_t wctype(const char* property); | 用于确定给定的宽字符类别 |
参数:
- property : 一个指向表示宽字符属性名称的字符串字面量的指针
常见的宽字符属性及含义如下:
属性名称 | 含义 |
---|---|
"alnum" | 字母数字字符 |
"alpha" | 字母字符 |
"blank" | 空格或水平制表符字符 |
"cntrl" | 控制字符 |
"digit" | 数字字符 |
"graph" | 可打印字符(除空格字符外) |
"lower" | 小写字母字符 |
"print" | 可打印字符 |
"punct" | 标点符号字符 |
"space" | 空白字符 |
"upper" | 大写字母字符 |
"xdigit" | 十六进制数字字符 |
返回值:
- 如果指定的属性存在,则返回相应的宽字符类型;
- 如果指定的属性不存在,则返回零。
5.2 演示示例
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>int main()
{wchar_t ch = L',';wctype_t punct_wt;// 获取标点符号字符类型punct_wt = wctype("punct");// 判断指定的宽字符是否为标点符号if (iswctype(ch, punct_wt)) {wprintf(L"%lc is a punctuation character.\n", ch);} else {wprintf(L"%lc is not a punctuation character.\n", ch);}return 0;
}
注意: 在调用
wctype()
函数时,应该传递一个有效的宽字符属性名称作为参数,详见 5.1 的表格所示。
5.3 运行结果
6. wctob
6.1 函数说明
函数声明 | 函数功能 |
---|---|
int wctob(wint_t wc); | 用于将给定的宽字符转换为其对应的字节表示 |
参数:
- wc : 一个宽字符值
返回值:
- 如果能转换成功,则返回返回与之对应的字节表示;
- 如果无法将给定宽字符转换为字节表示,则返回
EOF
。
6.2 演示示例
#include <stdio.h>
#include <wchar.h>int main()
{wchar_t ch = L'?';int byte;// 将 Unicode 字符转换为字节表示byte = wctob(ch);// 输出字节值printf("Byte value of %lc: %d (0x%02X)\n", ch, byte, byte);return 0;
}
注意: 在使用
wctob()
函数时,应该确保系统当前的本地化环境和编码方式与程序中使用的字符编码一致。如果字符编码不一致,可能会导致错误的结果或未定义行为。
6.3 运行结果
7. wctomb
7.1 函数说明
函数声明 | 函数功能 |
---|---|
int wctomb(char* s, wchar_t wc); | 用于将给定的宽字符转换为其对应的多字节字符表示 |
参数:
- s : 一个指向字符数组的指针
- wc : 一个宽字符值
返回值:
- 如果能转换成功,则将
wc
转换为其对应的多字节字符表示,存储在s
指向的字符数组中;- 如果
s
是空指针,则不执行任何操作,只返回转换所需的字符数;- 如果无法将给定宽字符转换为多字节字符表示,则返回
-1
7.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>int main()
{wchar_t ch = L'?';char mb[MB_CUR_MAX];int len;// 将 Unicode 字符转换为多字节字符表示len = wctomb(mb, ch);// 输出转换结果if (len >= 0) {printf("Multibyte representation of %lc: ", ch);for (int i = 0; i < len; i++) {printf("%02X ", (unsigned char) mb[i]);}printf("\n");} else {printf("Failed to convert %lc to multibyte character.\n", ch);}return 0;
}
在上面的示例程序中,wctomb()
函数被用来将 Unicode
字符 ','
转换为其对应的多字节字符表示,并将结果保存在字符数组 mb
中。然后,程序输出每个字节的十六进制值。
注意: 在使用
wctomb()
函数时,应该根据当前的本地化环境和编码方式调整字符数组的大小。可以使用MB_CUR_MAX
宏来获取当前编码方式下一个多字节字符所需的最大字节数,从而确定字符数组的大小。
7.3 运行结果
8. wmemchr
8.1 函数说明
函数声明 | 函数功能 |
---|---|
void* wmemchr(const void* s, wchar_t c, size_t n); | 用于在宽字符数组中查找给定的宽字符 |
参数:
- s : 一个指向宽字符数组的指针
- c : 要查找的宽字符值
- n : 要搜索的字节数
返回值:
- 如果找到了
c
,则返回指向该位置的指针;- 否则返回空指针。
8.2 演示示例
#include <stdio.h>
#include <wchar.h>int main()
{const wchar_t str[] = L"Hello, Huazie!";const wchar_t ch = L'u';wchar_t* pch;// 在宽字符数组中查找给定的宽字符// 使用 wcslen() 函数来获取 str 的长度,以指定要搜索的字节数 npch = wmemchr(str, ch, wcslen(str));// 根据 pch,来判断是否找到,并输出结果if (pch)wprintf(L"Found '%lc' at position %d.\n", ch, (int)(pch - str));elsewprintf(L"Could not find '%lc'.\n", ch);return 0;
}
8.3 运行结果
9. wmemcmp
9.1 函数说明
函数声明 | 函数功能 |
---|---|
int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n); | 用于比较两个宽字符数组的前 n 个宽字符 |
参数:
- s1 : 待比较的宽字符串1
- s2 : 待比较的宽字符串2
- n : 要比较的字节数
返回值:
- 如果两个数组相等,则返回零;
- 如果
s1
比s2
小,则返回负数;- 如果
s1
比s2
大,则返回正数。
9.2 演示示例
#include <stdio.h>
#include <wchar.h>int main()
{const wchar_t str1[] = L"Hello";const wchar_t str2[] = L"Huazie";int result;// 比较两个宽字符数组result = wmemcmp(str1, str2, wcslen(str1));// 根据result,来判断,并输出结果if (result == 0)wprintf(L"%ls and %ls are equal.\n", str1, str2);else if (result < 0)wprintf(L"%ls is less than %ls.\n", str1, str2);elsewprintf(L"%ls is greater than %ls.\n", str1, str2);return 0;
}
9.3 运行结果
10. wmemcpy
10.1 函数说明
函数声明 | 函数功能 |
---|---|
wchar_t* wmemcpy(wchar_t* dest, const wchar_t* src, size_t n); | 用于将一个宽字符数组的前 n 个宽字符复制到另一个宽字符数组 |
参数:
- dest : 目标宽字符串
- src : 源宽字符串
- n : 要复制的字节数
10.2 演示示例
#include <stdio.h>
#include <wchar.h>
#include <string.h>int main()
{const wchar_t src[] = L"Hello, Huazie!";wchar_t dest[20];// 将一个宽字符数组复制到另一个宽字符数组wmemcpy(dest, src, wcslen(src) + 1);// 输出结果wprintf(L"Source string: %ls\n", src);wprintf(L"Destination string: %ls\n", dest);return 0;
}
注意: 在使用
wmemcpy()
函数时,应该确保目标数组有足够的空间来存储源数组的内容,以免发生缓冲区溢出。在上面的示例中,我们使用wcslen()
函数来获取源数组的长度,然后加上1
,以包括字符串结尾的空字符 '\0'
。
10.3 运行结果
11. wmemset
11.1 函数说明
函数声明 | 函数功能 |
---|---|
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); | 用于将一个宽字符数组的前 n 个宽字符设置为给定的宽字符值 |
参数:
- s : 一个指向宽字符数组的指针
- c : 要设置的宽字符值
- n : 要设置的字节数
11.2 演示示例
#include <stdio.h>
#include <wchar.h>
#include <string.h>int main()
{wchar_t str[20]= L"Hello Huazie!";// 修改前wprintf(L"Before: %ls\n", str);// 将一个宽字符数组的所有元素设置为给定的宽字符值Xwmemset(str, L'X', wcslen(str));// 修改后wprintf(L"After : %ls\n", str);return 0;
}
在上面的示例程序中,
- 首先,我们定义一个宽字符数组 str,并初始化为
"Hello Huazie!"
; - 接着,调用
wprintf()
函数输出修改之前的宽字符数组str
; - 然后,调用
wmemset()
函数将宽字符数组str
的所有元素都设置为‘X’
; - 最后,再调用
wprintf()
函数输出修改之后的宽字符数组str
,并结束程序。
11.3 运行结果
12. wprintf
12.1 函数说明
函数声明 | 函数功能 |
---|---|
int wprintf(const wchar_t* format, ...); | 用于格式化输出宽字符字符串 |
参数:
- format : 一个宽字符格式化字符串
- … : 可选参数
12.2 演示示例
#include <stdio.h>
#include <wchar.h>int main()
{wchar_t name[] = L"Huazie";int age = 25;double height = 1.75;// 输出格式化的宽字符字符串wprintf(L"%ls %d %.2f\n", name, age, height);return 0;
}
12.3 运行结果
13. write
13.1 函数说明
函数声明 | 函数功能 |
---|---|
ssize_t write(int fd, const void* buf, size_t count); | 用于将数据写入文件描述符 |
参数:
- fd : 要写入的文件描述符
- buf: 写入数据的缓冲区
- count: 写入的字节数
返回值:
- 如果写入成功,则返回实际写入的字节数;
- 如果出现错误,则返回
-1
。
13.2 演示示例
#include <stdio.h>
#include <unistd.h>int main()
{const char msg[] = "Hello, Huazie!\n";int nbytes;// 向标准输出流写入数据nbytes = write(STDOUT_FILENO, msg, sizeof(msg) - 1);// 输出结果if (nbytes == -1) {perror("write");return 1;}return 0;
}
注意: 在使用
write()
函数时,应该确保给定的文件描述符是有效的,并且缓冲区中有足够的数据可供写入,以免发生未定义的行为
13.3 运行结果
14. wscanf
14.1 函数说明
函数声明 | 函数功能 |
---|---|
int wscanf(const wchar_t* format, ...); | 用于从标准输入流(stdin)读取格式化的宽字符输入 |
参数:
- format : 一个宽字符格式化字符串
- … : 可选参数
14.2 演示示例
#include <stdio.h>
#include <wchar.h>int main()
{wchar_t name[20];int age;// 从标准输入流读取格式化的宽字符输入wprintf(L"Please nput your name and age: ");wscanf(L"%ls %d", name, &age);// 输出结果wprintf(L"name: %ls age: %d\n", name, age);return 0;
}
14.3 运行结果
相关文章:

C语言函数大全-- w 开头的函数(2)
C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcstok 1.1 函数说明 函数声明函数功能wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);用于将一个长字符串拆分成几个短字符串(标记),并返回第一个标记的地…...
kafka启动创建topic报错:zookeeper is not a recognized option
当前使用版本:kafka_2.13-3.4.0 使用老版本的创建topic的命令,是用zookeeper来创建,但是报错如下 D:\Software\Doument\kafka_2.13-3.4.0> .\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 …...

11个超好用的SVG编辑工具
SVG的优势在于SVG图像可以更加灵活,自由收缩放大而不影响图片的质量,一个合适的SVG编辑工具能够让你的设计事半功倍,下面就一起来看看这些冷门软件好用在哪里。这11个超好用的SVG编辑工具依次为:即时设计、Justinmind、Sketsa SVG…...

低代码平台:10分钟从入门到原理
导航目录 一、低代码概念 二、优势及局限 三、基础功能及搭建 1、业务流程 2、用户权限 3、统计图表 四、使用感受 五、总结 传统的软件研发方式目前并不能很好地满足企业的需求:人员成本高、研发时间长、运维复杂。这时低代码工具的出现为快速开发软件提供…...
【JavaScript】如何获取客户端IP地址?
使用这个库:request-ip 它按照如下顺序获取请求的IP地址: X-Client-IPX-Forwarded-For (Header may return multiple IP addresses in the format: “client IP, proxy 1 IP, proxy 2 IP”, so we take the first one.)CF-Connecting-IP (Cloudflare)F…...

数据科学中使用的17 种相似性和相异性度量之欧氏距离
目录 1简介 2距离函数 2.1 L2范数(欧氏距离) 1简介 在数据科学中,相似性度量是一种衡量数据样本如何相互关联或相互接近的方法。另一方面,相异性度量是告诉数据对象有多少是不同的。此外,当相似的数据样本被分组到一…...

朋友去华为面试,轻松拿到30K的Offer,羡慕了......
最近有朋友去华为面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…...
MySQL入门第五课:数据更新
数据更新 1 插入 插入表数据 insert into 表名 (字段列表) values(值列表) insert into 表名 set 字段名1 值1,字段名2值2 插入多个数据 insert into 表名 values(值1,值2,值3.....) 这里面的值与列索引是对应的 显示表数据 select * fr…...

ALSA子系统(十八)------指纹解锁动画提示声卡顿问题解析
你好!这里是风筝的博客, 欢迎和我一起交流。 很久没写kernel相关的东西了,主要是来到手机厂之后,大部分还是在Android上,Kernel虽然也有涉及,但毕竟只是有所涉及,主要业务逻辑还是在HAL之上&am…...

[230513] TPO72 | 2022年托福阅读真题第1/36篇 | 10:45
Invading Algae 目录 Invading Algae 全文 题目 Paragraph 1 P1 段落大意 问题1 Paragraph 2 P2 段落大意 问题2 *问题3* Paragraph 3 P3 段落大意 问题4 Paragraph 4 P4 段落大意 Paragraph 5 P5 段落大意 *问题5* *问题6* 问题7 问题8 问题9…...

操作符详解
目录 操作符分类 算术操作符 - * / % 二进制 二进制总结 移位操作符(操作数只能为整数) << >> 位操作符(操作数必须为整数) & | ^ 面试题 赋值操作符 复合赋值符 单目操作符 单目操作符介绍…...

【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别
目录 一、问题描述二、概念神经网络实现手写体数字识别原理三、算法步骤3.1 数据输入3.2 特征提取3.3 模型训练3.4 测试 四、运行结果 一、问题描述 手写体数字属于光学字符识别(Optical Character Recognition,OCR)的范畴,但分类…...
数据库管理-第六十九期 另一种累(20230422)
数据库管理 2023-04-22 第六十九期 另一种累1 国产数据库沟通2 问题3 我的建议总结 第六十九期 另一种累 Oracle 23c的相关内容先缓缓,有些数据库管理相关的还是得正式版发布后才好去做实验。这周相较于之前那种割接较多的累还有点不一样,这周陪着客户交…...

Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)
Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…...

Redis系列--redis持久化
一、为什么需要持久化 redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RD…...

在外Windows远程连接MongoDB数据库【无公网IP】
文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…...

学网络安全怎么挖漏洞?怎么渗透?
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...

KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释…...

浪涌保护器:保护电子设备免受雷击侵害
引言: 随着电子设备在现代生活和工业领域的普及和广泛应用,雷击对电子设备的损害成为一个严重的问题。浪涌保护器作为一种重要的防雷设备,发挥着至关重要的作用。本文将介绍浪涌保护器的防雷作用、行业应用,并重点介绍浪涌保护器…...

js绘制的红心
看腻歪了粒子特效的红心,今天给各位整个线条的,效果图如下: 表白显圣神器,你值得拥有,代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...
Ubuntu 系统.sh脚本一键部署内网Java服务(组件使用docker镜像,宕机自启动)
#!/bin/bash# 更新系统并安装必要的依赖 sudo apt update sudo apt install -y apt-transport-https ca-certificates curl software-properties-common# 安装 Docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository …...
C++ vector容器存储对象和存储指针的区别(vector对象、vector指针)(存储指针时推荐使用智能指针)
文章目录 **1. 内存管理**- **存储对象**:- **存储指针**: **2. 生命周期控制**- **存储对象**:- **存储指针**: **3. 性能差异**- **存储对象**:- **存储指针**: **4. 使用场景**- **选择存储对象的情况**…...
CSS中justify-content: space-between首尾贴边中间等距(两端元素紧贴左右边缘,中间元素等距均匀分布)
justify-content: space-between; 是 CSS Flexbox 布局中的一个属性值,主要作用是在弹性容器的主轴方向上均匀分布子元素,具有以下核心特性: 作用效果: 首尾贴边 第一个子元素紧贴容器起始端 最后一个子元素紧贴容器结束端 中…...
Python学习(7) ----- Python起源
🐍《Python 的诞生》:一段圣诞假期的奇妙冒险 📍时间:1989 年圣诞节 在荷兰阿姆斯特丹的一个寒冷冬夜,灯光昏黄、窗外飘着雪。一个程序员 Guido van Rossum 正窝在家里度假——没有会议、没有项目、没有 bug…...

vue中Echarts的使用
文章目录 Echarts概述什么是EchartsEcharts的好处 Vue中Echarts的使用Echarts的安装Echarts的引入 Echarts概述 什么是Echarts Apache ECharts:一个基于 JavaScript 的开源可视化图表库。 其官网如下:https://echarts.apache.org/zh/index.html Echar…...
数据源指的是哪里的数据,磁盘中还是内存中
在 MyDB 项目中,特别是这段缓存框架代码: T obj getForCache(key);以及它的上下文: AbstractCache 是一个抽象类,内部有两个抽象方法,留给实现类去实现具体的操作: protected abstract T getForCache(lon…...
树莓派系统中设置固定 IP
在基于 Ubuntu 的树莓派系统中,设置固定 IP 地址主要有以下几种方法: 方法一:使用 Netplan 配置(Ubuntu 18.04 及以上版本默认使用 Netplan) 查看网络接口名称 在终端输入ip link或ip a命令,查看当前所使…...

论文MR-SVD
每个像素 7 个 FLOPs意思: FLOPs(浮点运算次数):衡量算法计算复杂度的指标,数值越小表示运算越高效。含义:对图像中每个像素进行处理时,仅需执行7 次浮点运算(如加减乘除等…...

c++对halcon的动态链接库dll封装及调用(细细讲)
七个部分(是个大工程) 一,halcon封装函数导出cpp的内容介绍 二,c++中对halcon环境的配置 三,在配置环境下验证halcon代码 四,dll项目创建+环境配置 五,编辑dll及导出 六,调用打包好的动态链接库的配置 七,进行测试 一,halcon的封装及导出cpp的介绍 1,我这里…...

【优选算法】分治
一:颜色分类 class Solution { public:void sortColors(vector<int>& nums) {// 三指针法int n nums.size();int left -1, right n, i 0;while(i < right){if(nums[i] 0) swap(nums[left], nums[i]);else if(nums[i] 2) swap(nums[--right], num…...