![](https://img-blog.csdnimg.cn/a8502c767c7546e7a5576f6264417f59.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
C++
jjinglover
这个作者很懒,什么都没留下…
展开
-
C++ 不定参数模版
定义auto类型的变量并初始化为一个字符串字面量时,编译器会进行类型推导。由于 "a" 是一个字符串字面量,它在内存中是作为一个常量字符数组存在的,但在这里并没有引用整个数组,而是将整个字符串字面量赋值给一个变量。pushToVectorIfParamIsStr函数中的T &&value参数 ,为右值引用,接收到参数"c"时,其类型依然为char const [],因此无法通过下面代码的检测。预期vec中推入的字符串是a,b,c,d,实际只推入了a,b,d,字符串"c"并没有被推入vec,什么原因呢?原创 2024-06-11 18:11:19 · 365 阅读 · 0 评论 -
C++ JWT的使用
C++使用JWT加密参数原创 2024-05-15 14:16:35 · 250 阅读 · 0 评论 -
openssl计算md5
openssl计算md5原创 2023-12-25 15:08:50 · 485 阅读 · 0 评论 -
C++实现一些C#接口
在C#中,string类型是基于UTF-16编码的,因此,如果参考的处理方案是基于UTF-16的,C#中的string对应到C++中应使用std::u16string。调用接口时先将std::string转换成std::u16string,处理结束再将std::u16string转换成std::string。原创 2023-12-15 17:06:42 · 203 阅读 · 0 评论 -
C/C++中char*与wchar_t*之间的转换
功能:配置地域化信息头文件:< locale.h>函数原型:char* setlocale(int category, const char* locale)函数参数:category表示对本地化的某项内容进行设置,可取如下值:LC_ALL 包括下面的全部选项都要;LC_COLLATE 配置字符串比较;C_CTYPE 配置字符类别及转换,例如全变大写strtoupper();LC_MONETARY 配置金融货币;LC_NUMERIC 配置小数点后的位数;转载 2023-05-10 11:05:10 · 4565 阅读 · 0 评论 -
priority_queue元素为指针时,重载运算符失效
使用priority_queue构造最大最小堆时,发现priority_queue中元素为指针时,stdgreater/stdless函数并不能调用到自定义数据的重载运算符,排序结果是根据指针地址大小计算的,从而导致最大最小堆失效。失效的最小堆,可以看到是按照指针地址排序的。.........原创 2022-08-02 12:07:10 · 446 阅读 · 1 评论 -
解析自定义格式
自定义格式解析实现富文本的效果原创 2022-06-12 17:51:01 · 113 阅读 · 1 评论 -
C++跳点搜索
这两天用C++写了个JPS,原理网上有很多介绍,不了解的小伙伴自行搜索即可。C++版JPS实现:https://github.com/jjinglover/myTools/tree/main/JPS参考资料:https://zhuanlan.zhihu.com/p/181734749原创 2022-03-07 18:02:45 · 429 阅读 · 0 评论 -
C++使用priority_queue 实现最大最小堆
参考考资料:https://www.cnblogs.com/nirvana-phoenix/archive/2012/05/29/2524344.html1.基本类型实现#include <iostream>#include <vector>#include <queue>void log(const char* str){ std::cout << str;}void log(const int v){ std::cout .原创 2022-03-06 22:38:48 · 1258 阅读 · 0 评论 -
UrlEcode空格的编码问题
接入腾讯游戏大厅的openKey续期功能时,一直出现签名问题,仔细阅读文档发现:某些语言的urlencode方法会把“空格”编码为“+”,实际上应该编码为“%2B”。这也将生成错误的签名,导致签名通不过验证。而我使用的UrlEcode实现正是这样,调整之后验签成功。附:我使用的UrlEncode实现UrlEncode腾讯签名的文档说明腾讯开放平台第三方应用签名参数sig的说明...原创 2021-11-16 16:11:01 · 2731 阅读 · 0 评论 -
rapidjson创建json字符串
参考链接:http://rapidjson.org/zh-cn/#include "json/stringbuffer.h"#include "json/prettywriter.h"void getJson(){ rapidjson::StringBuffer buf; rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); writer.StartObject(); writ原创 2021-08-16 14:35:02 · 812 阅读 · 0 评论 -
加速运动获取到达目标的时间
根据公式S=½ a t²+v0*t 计算代码如下:double getCostTimeByDistanceSpeedAndSpeedUp(double distance, double speed, double speedUp){ //t=sqart(2*s/a+pow(v/a,2))-v/a; double va = speed / speedUp; double t = sqrt(2 * distance / speedUp + pow(va, 2)) - va; return .原创 2021-08-05 13:40:14 · 178 阅读 · 0 评论 -
C/C++ 中 volatile 关键字详解
转自:https://www.runoob.com/w3cnote/c-volatile-keyword.html1、为什么用volatile?C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an o转载 2021-04-08 15:55:04 · 332 阅读 · 0 评论 -
伸缩按钮的实现
写了一个按钮伸缩的控件,实现如下:FlexibleBtn.h文件#ifndef __FlexibleBtn__#define __FlexibleBtn__#include "cocos2d.h"#include "ui/CocosGUI.h"USING_NS_CC;class FlexibleBtn:public Node{public: FlexibleBtn(); ~FlexibleBtn(); struct FlexibleData { int type;原创 2021-02-25 23:27:42 · 452 阅读 · 0 评论 -
获取文件的MD5
直接上代码:#include <iostream>#include <string>#include "include/mbedtls/md5.h"void hexifyLower(char *obuf, const unsigned char *ibuf, int len){ unsigned char l, h; while (len != 0) { h = (*ibuf) / 16; l = (*ibuf) % 16; if (h <原创 2020-10-17 22:32:55 · 139 阅读 · 0 评论 -
代码片段笔记
快速开方运算原创 2020-07-11 18:43:40 · 123 阅读 · 0 评论 -
std::vector动态扩展策略
这两天重新阅读了《STL源码剖析》,距离上次看此书已有3年时间,当时只是大概浏览了一番。vector的技术实现,关键在于其对大小的控制以及重新配置时的数据移动效率。一旦vector旧有空间满载,如果客户端每新增一个元素,vector内部只是扩充一个元素的空间,实为不智,因为所谓扩大空间(不论多大),一如稍早所说,是“配置新空间/数据移动/释放旧空间”的大工程,时间成本很高,应该加入某种未雨绸缪的考虑。所谓动态增加大小,并不是在原空间之后接续新空间(因为无法保证原空间之后上油可供配置的空间),而是以原原创 2020-05-20 23:03:20 · 1031 阅读 · 0 评论 -
自己常用时间处理函数记录
记录自己常用的时间处理函数,方便以后查阅。#ifndef __SELFTIME__#define __SELFTIME__#include <stdio.h>#include <time.h>#include <string>#define TIME_ZONE_OFFSET_SECONDS (8*3600) //东八区const int ...原创 2019-12-06 11:40:27 · 219 阅读 · 0 评论 -
boost::algorithm::string学习小记
参考链接:https://www.boost.org/doc/libs/1_70_0/doc/html/string_algo/quickref.htmlboost::algorithm::string是boost中的一个库, 主要用于字符串的处理。记录下几个常用的功能以备后查:#include <vector>#include <string>#incl...原创 2019-08-04 22:29:12 · 415 阅读 · 0 评论 -
C++字符串转十六进制
字符串转成十六进制本质上是二进制转成十六进制二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制例如字符‘0’的ASCALL码为48二进制表示为 0011 0000 (4位一段,位数不足高位补0)转成十六进制就是 3 0因此字符串转十六进制就是取二进制的高四位和低四位分别转换,代码如下:string binaryToHex(...原创 2019-03-08 10:57:19 · 19951 阅读 · 6 评论 -
C++ A*算法实现
参考:https://blog.csdn.net/zgwangbo/article/details/52078338#include "stdafx.h"#include <iostream>#include <vector>#include <string>#include <map>#include <algorithm&g...原创 2018-04-18 16:47:32 · 5314 阅读 · 9 评论 -
boost::lexical_cast 学习小记
lexical_cast是boost中的一个库, 主要用于数值与字符串的相互转换。使用起来也很方便,例:int value=boost::lexical_cast<int>("123")float value=boost::lexical_cast<float>("1.2")但是lexical_cast的字符串转数值功能相比atoi()函数类型检测更严格,例...原创 2019-07-24 16:38:15 · 700 阅读 · 0 评论 -
文件的加密解密
项目需要对一些配置文件进行加密处理,自己实现了简单的demo,原理是对一个字符使用同一个key进行偶数次异或等于自身。代码如下:#include "stdafx.h"#include <iostream> #include <string>#include <vector>#include <direct.h>std::str...原创 2019-07-08 13:11:46 · 769 阅读 · 0 评论 -
strtok()的简单使用
strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针,如果查找不到delim中的字符时,返回当前str...原创 2019-06-03 13:26:14 · 3384 阅读 · 2 评论 -
最常用的设计模式-----策略模式(C++实现)
转自:https://blog.csdn.net/lh844386434/article/details/16825861?utm_source=blogxgwz3策略模式也是一种非常常用的设计模式,而且也不复杂。下面我们就来看看这种模式。定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。角色: 抽象策...转载 2018-10-22 10:39:35 · 243 阅读 · 0 评论 -
C++遍历目录
#include "stdafx.h"#include <iostream>#include <string>#include <io.h>using namespace std;void foreachFile(const std::string &path){ std::string goal_path = path + "/*....原创 2016-05-04 11:16:54 · 342 阅读 · 0 评论 -
C++11系列-lambda函数
转自:http://towriting.com/blog/2013/08/11/lambda-closures/C++11一个最激动人心的特性是支持创建lambda函数(有时称为闭包)。这意味着什么?一个Lambda函数是一个可以内联写在你代码中的函数(通常也会传递给另外的函数,类似于仿函数或函数指针)。使用Lambda,创建机动函数会更简单,而以前你必须创建一个有名函数。在这篇文章中,我先用...转载 2018-08-30 14:09:26 · 2407 阅读 · 0 评论 -
C++ 将自定义数据存储到文件
将自定义数据存储到文件并读取的代码片段:struct Stuent{ Stuent(){} Stuent(std::string n, int a, int s) :name(n), age(a), score(s) { } std::string name; int age = 0; int score = 0; void log(){ std::cout...原创 2018-08-07 23:25:40 · 2838 阅读 · 0 评论 -
ofstream和ifstream详细用法
转自:https://blog.csdn.net/Carvin_Zh/article/details/45818403ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间(文章最末尾附上了MSDN中关于这两个函数的解释);在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算...转载 2018-04-07 22:11:39 · 534 阅读 · 0 评论 -
C++解析自定义格式字符
#include <iostream>#include <vector>#include <string>using namespace std;//自定义数据结构struct ContentInfo{ string desc; int type; int color; int size; int p...原创 2017-09-05 16:24:38 · 1906 阅读 · 0 评论 -
curl windows下编译lib
转自:http://blog.csdn.net/tujiaw/article/details/53026668编译 官方下载源码,找到winbuild目录。打开vs2013开发人员命令提示工具,编译debug版本:E:\cpp11\curl-7.51.0\winbuild>nmake /f Makefile.vc mode=static VC=12 DEBUG=yes 编译re转载 2017-09-05 00:17:44 · 473 阅读 · 0 评论 -
哈希表算法实现
转自:http://blog.csdn.net/jdh99/article/details/8490704哈希表算法实现本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.环境:主机:WINXP开发环境:MINGW说明:本程序建立的哈希表示意图:转载 2017-03-14 17:25:02 · 185 阅读 · 0 评论 -
UWP文件写入
使用C++开发UWP应用时,遇到一个异常的问题:在部分win10设备使用FILE类写文件失败 看了下获取可写目录的代码没问题,代码如下(有问题还望指正),string getWritablePath() const{ auto localFolderPath = Windows::Storage::ApplicationData::Current->LocalFolder...原创 2018-12-12 16:46:55 · 818 阅读 · 0 评论 -
C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
转自:https://www.cnblogs.com/chenyangchun/p/6795923.html1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression//转换格式1type-id(expression)//转换格式2c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:stat...转载 2018-12-03 17:18:46 · 204 阅读 · 0 评论 -
(C++)STL排序函数sort和qsort的用法与区别
转自:https://www.cnblogs.com/AndyJee/p/4676146.html主要内容:1、qsort的用法2、sort的用法3、qsort和sort的区别qsort的用法:原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));...转载 2018-12-14 19:19:53 · 283 阅读 · 0 评论 -
socket实现类群聊功能
使用socket做了一个类似群聊功能的demo,来记录这两天学习socket的成果。在实现功能之前先看下sockect通信的基本流程:socket服务端:1.socket():创建套接字2.bind():将创建的套接字绑定到一个本地地址和端口上3.listen():监听套接字,准备接受客户请求4.accept():接收客户端请求,返回一个对应此连接新套接字5.用acce...原创 2019-05-13 17:39:51 · 337 阅读 · 0 评论 -
std::mutex的简单使用
记录下std::mutex的基本使用方式:#include <iostream>#include <thread>#include <mutex>std::mutex _mutex;//互斥锁void testLog(int index){ _mutex.lock(); for (size_t i = 0; i < 1...原创 2019-04-17 23:54:15 · 588 阅读 · 0 评论 -
std::lock_guard简单使用
类lock_guard是互斥封装器,为在作用域块期间占有互斥提供便利RAII 风格机制。创建lock_guard对象时,它试图接收给定互斥的所有权。控制离开创建lock_guard对象的作用域时,销毁lock_guard并释放互斥。lock_guard类不可复制。示例:#include <iostream>#include <thread&...原创 2019-04-21 21:18:34 · 1966 阅读 · 0 评论 -
#、##、__VA_ARGS__的使用
使用打印信息的接口时,经常见到__VA_ARGS__和##__VA_ARGS__这两个字符串,花时间学习下这部分的知识,发现还有#和##这两个比较有意思的字符串,记下他们的用法:#: 用来把参数转换成字符串;例:#include <iostream>#define LOG(x) do { printf("%s=%d\n",#x,x); }while(0)int ...原创 2019-03-27 00:31:16 · 26463 阅读 · 5 评论 -
C++可变参数
参考:https://www.cnblogs.com/yongssu/p/4677556.htmlva_list/va_start/va_arg/va_end这几个宏,都是用于函数的可变参数的va_list用于声明一个变量,我们知道函数的可变参数列表其实就是一个字符串,所以va_list才被声明为字符型指针,这个类型用于声明一个指向参数列表的字符型指针变量,例如:va_list ap;//...原创 2019-02-26 14:10:05 · 606 阅读 · 0 评论