C++ – Windows/Linux跨平台gbk与utf8字符集编码转换
1 Windows/Linux跨平台gbk与utf8字符集编码转换 在Windows系统上使用系统api,在linux上使用iconv进行gbk与utf8字符集编码转换 我已经将上述功能封装为single header的工具类,具体代码如下 #ifndef _CHARACTERSET_CONVERT…
- C++
- 2023-02-27
C++ – 使用标准库std::use_facet和std::codecvt进行跨平台gbk与utf8字符集转换
1 C++标准库中与字符集转换相关的类 1.1 std::use_local和facet C++中的std::local每个本地化环境对象至少包含了以下的标准facet, std::collate、std::collate std::ctype、 std::ctype std::codecvt<…
- C++
- 2023-02-27
C++ – websocket++库的可使用的所有事件总结
1 Websocket++库的事件 C++的websocket库Websocket++中使用事件机制管理websocket连接消息,比如在websocket连接打开时触发open消息,在接收到客户端/服务端时,触发message消息,就和在js、java中使用websocket一样。 在Websoc…
- C++
- 2023-02-14
C++ – 对字符串和图片进行base64编解码
1 cpp-base64 本次要使用的是Github上开源的base64编解码库:https://github.com/ReneNyffenegger/cpp-base64,也是我在实际项目中经常使用的base64编解码库,基本上满足了我的需求。 在Github官方仓库中提供了如何使用该库的官方页面…
- C++
- 2023-02-09
C++ – 导出接口函数和导出C++类
在C++实际的项目开发过程中,经常需要将核心功能打包成动态链接库(Dynamic Link Library)供第三方调用,在dll中我们可以不仅可以导出接口函数还可以导出C++类。 下面以简单的示例代码说明如何在C++导出接口函数和类。 1 C++中导出接口函数和导出C++类 1.1 C++动态链接…
- C++
- 2023-02-03
C++ – 一文搞懂std::future、std::promise、std::packaged_task、std::async的使用和相互区别
1 future future,翻译过来的意思就是未来、将来、前途、前程。 在C++11中,使用future作为获取异步任务(在单独线程中启动的函数)的工具模块的名字 ,无疑是非常贴切,因为在异步任务中,其返回的结果就是在未来(异步任务执行完)需要获取的结果。 在C++11中,头文件<futu…
- C++
- 2023-01-31
C++ – 我在项目实际开发中用到的第三方库/开源项目,涵盖网络、加密解密、GUI、网络、音视频、图片等等
在项目的实际开发过程中,特别是对于一些小型、中型的公司,由于高昂的用人成本,自己开发轮子在实际生产环境中的风险不可控性以及其他因素,没办法对每一种基础功能模块都自己造轮子,所以寻找成熟的、开源的替代方案是必要和安全的。 在多年的C++开发生涯里,我也逐渐在C++工程项目中使用了一些优秀的开源项目和其…
- C++
- 2023-01-30
Duilib – 界面出现不可拖动和不可拉伸的问题
1 Duilib软件界面出现不可拖动和不可拉伸的问题 距离上一次用Duilib写Windows软件界面已经几个月了,对于Duilib的使用难免比较生疏,今天就遇到一个比较费解的问题,一般情况下我们在写duilib界面的xml文件时,会如下的对软件主界面进行定义 <Window size="12…
- Duilib
- 2023-01-30
C++ – std::numeric_limits简介与使用,用于获取指定数据类型的最大值与最小值
1 std::numeric_limits简介 std::numeric_limits是C++标准库提供的查询特定数据类型属性的模型函数,此属性包括数据类型的最大值、最小值等,比如获取float型的最大值、最小值等。 函数声明如下 template< class T > class nu…
- C++
- 2023-01-12
C++ – Windows获取电脑上摄像头设备数目、名字以及id
1 Windows系统获取摄像头信息 1.1 ICreateDevEnum::CreateClassEnumerator 在Windows系统上如果要获取摄像头的数目、摄像头的名字等信息,就需要使用Windows的系统API,这里的我们使用的API函数为ICreateDevEnum::CreateC…
- C++
- 2023-01-10
C++ – std::unordered_map中使用结构体或者vector等复杂的数据结构作为Key值
1 std::unordered_map中使用结构体或者vector等复杂的数据结构作为Key值 1.1 std::vector作为Key C++11中引入了unordered_set和unordered_map,其内部数据结构实现没有使用map和set中的红黑树,而是使用的哈希表。如果我们在uno…
- C++
- 2023-01-05
C++ – 在CTC解码算法后移除相邻重复和blank索引
1 C++ 在CTC解码算法后移除相邻重复和blank索引 在CTC Decode解码算法之后,比如说使用Greedy CTC Decode、Beam CTC decode、Prefix Beam CTC Decode算法之后,通常会得到包含blank索引的一个长序列,比如说 1,5,8,8,8,0…
- C++
- 2022-12-22