C++ – 使用宏区分不同系统平台、不同编译器、不同编译模式等编译期宏使用总结
1 区分不同系统平台 //----------------------------- #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) #ifdef _WIN64 // win64 #else…
- C++
- 2022-01-25
C++ – 使用Crypto++/CryptoPP加解密库对字符串或者文件进行AES256加密
1 AES加密算法 Crypto++/CryptoPP加解密库官网:https://www.cryptopp.com/ 在写桌面程序的时候一些自定义的数据文件不可避免的需要放在本地,通常这种数据文件保存了一些敏感信息,所以必须想办法对其进行加密。然后在程序中对这种数据文件进行解密然后读取正确的内容。…
- C++
- 2022-01-14
C++ – 将std::vector中的数值拷贝到数组中
1 将std::vector中的数值拷贝到数组中 在程序实际运行过程中,为了防止数组越界经常使用stl 容器,但是在做数据交换时经常需要传递数据流的指针,这个时候就需要将stl 容器中的数据拷贝到数组中,当然,只针对int float double这种常规类型的数据。 #include <io…
- C++
- 2022-01-10
C++ – 求解std::vector中topk数值以及topk数值对应的索引
1 C++获取vector中topk数值以及topk数值对应的索引 1.1 思路 topk问题是日常应用经常会遇到的问题,在python中对于多分类问题,经常需要输出top5的标签,在C++中,topk问题也是经常面对的问题。 比如给定一个std::vector<float>的容器,需要…
- C++
- 2022-01-06
C++11 – 使用std::codecvt进行字符编码转换需要注意的时间效率问题
1 使用std::codecvt进行Unicode转UTF8字符编码的时间效率测试 通常情况下,使用std::codecvt进行Unicode转UTF8编码会使用以下的函数: std::string Std_UnicodeToUTF8(const std::wstring& unicodeS…
- C++
- 2021-12-21
C++11 – 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度
1 应用场景 在实际的应用过程中,经常会遇到一个大数量的for循环耗时的问题,比如说出现了一个10000000次的for循环,每一次循环处理业务逻辑需要耗时1ms,如: for (int i = 0; i < 10000000; ++i) { dosomething() } 那么整个for循环…
- C++
- 2021-12-17
C++ – 格式化json字符串,方便展示json字符串的层次结构
1 格式化json字符串 1.1 目的 在C++ nlohmann json得到的字符串都是一整块的输出结果,对于json字符串的层次结构展示的不是很清晰,希望在打印json字符串的时候可以在控制台中看到层次结构分明的json字符串。 例如将: {"Peoples":[{"name":"张三","a…
- C++
- 2021-12-10
C++ – 将Unicode std::wstring字符串转换为Unicode std::string转义字符,类似于\uxxxx的形式
1 将Unicode字符转换为\uxxxx转义字符 实现效果: 将: 你好 转换为: u4f60\u597d 的形式。 1.1 C++代码 #include <iostream> #include <sstream> #include <iomanip> std:…
- C++
- 2021-12-10
C++ – 使用ffmpeg读取视频旋转角度并使用OpenCV根据旋转角度对视频进行旋转复原
1 视频中的旋转信息以及为什么会有旋转信息 Android或者ios等手机上录制视频时,由于重力感应或者录制视频的摆放方式的问题会导致录制的视频拥有旋转信息。如果是横屏录制(手机逆时针旋转90度),则录制的视频时不带角度的。如果是竖屏录制(正常的拿手机的姿势),此时的录制的视频的旋转角度是90度。如…
- C++
- 2021-12-07
C++ – 阿拉伯数字字符串转换为中文读法的中文字符串,支持小数点
1 C++阿拉伯数字字符串转换为中文读法的中文字符串,不支持小数点 最近碰到一个这样的需求,就是将阿拉伯数字字符串转换为中文读法的中文字符串,形如将 "199922" 转换为: "十九万九千九百二十二" 经过一番折腾,已经可以成功完成转换,并支持个位数到兆的范围转换,我的示例代码如下: #inclu…
- C++
- 2021-12-04
C++ – 使用正则判断字符串是否全是中文
1 C++使用正则判断字符串是否全是中文 使用中文的Unicode编码范围对字符串进行正则匹配,示例代码如下: #include <iostream> #include <string> #include <regex> int main() { std::wst…
- C++
- 2021-12-04
C++ – Unicode编码下的全角字符转半角字符
1 Unicode编码下的全角字符转半角字符 如果输入的待转换的字符串是std::wstring型,那么直接对std::wstring中的字符进行遍历,将其中的全角字符转换为半角字符,具体的转换代码如下: #include <iostream> #include <locale&g…
- C++
- 2021-12-04