C/C++工具库
不然秋月春风夜
不然秋月春风夜,争那闲思往事何。
展开
-
位操作封装
#ifdef _WIN32#include <windows.h>#else#define byte unsigned char#endif/***************************************************************************** 函数功能:获取指定位的值* @param n 值* m ...原创 2019-12-12 22:42:12 · 224 阅读 · 0 评论 -
进制转换工具库
#include <iostream>#include <string>using namespace std;/***************************************************************************** 函数功能:字符串转换为数字 将任意2-36进制表示的字符串转化为十进制数。* ...原创 2019-12-12 22:43:26 · 273 阅读 · 0 评论 -
c++获取系统时间戳的方法
static inline uint64_t getCurrentMicrosecondOrigin() {#if !defined(_WIN32) struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec * 1000000LL + tv.tv_usec;#else return std::chrono::du...原创 2019-12-11 14:53:20 · 4982 阅读 · 0 评论 -
C++禁止拷贝虚基类
#pragma onceclass NonCopyable{public:NonCopyable(const NonCopyable&) = delete; // deletedNonCopyable& operator = (const NonCopyable&) = delete; // deletedNonCopyable() = default; /...原创 2019-12-11 15:00:56 · 238 阅读 · 0 评论 -
UDP打洞
UDP打洞要借助一个打洞服务器。server端#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <sys/types.h>#include <string.h>#include <errno.h>#ifdef _WIN32#inc...原创 2019-12-12 23:00:02 · 713 阅读 · 0 评论 -
TLV格式解析与打包
#include <stdio.h>#include <WinSock2.h>#include #pragma comment(lib, “WS2_32”)enum emTLVNodeType{emTlvNNone = 0,emTlvNRoot,emTlvName,emTlvAge,emTlvColor};typedef struct _CAT_IN...原创 2019-12-12 22:50:45 · 949 阅读 · 0 评论 -
RAII封装
在c++中可以借助RAII来完成对对象地处理,避免到处异常释放对应地资源。#ifndef __ONCE_RAII_H__#define __ONCE_RAII_H__#include <functional>using namespace std;namespace toolkit { class onceRAII { public: typedef functio...原创 2019-11-15 16:05:42 · 215 阅读 · 0 评论 -
c++实现跨平台字符转码
#include <string>#include <vector>#include <locale>#include <codecvt>using namespace std;std::string gb2312_to_utf8(std::string const &strGb2312){ std::vector<wch...原创 2019-05-28 09:26:38 · 882 阅读 · 0 评论 -
c++借助stringstream实现类型转换
无意中发现的一个小模板,可以方便地进行类型转换,从而避免调用多个函数地麻烦。#include <iostream>#include <sstream>#include <string>using namespace std;template<class out_type, class in_value>out_type convert_...原创 2019-11-15 11:21:07 · 148 阅读 · 0 评论 -
c++跨平台生成uuid
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写。是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID)。UUID的唯一缺陷在于生成的结果串会比...原创 2019-03-22 20:18:13 · 3675 阅读 · 0 评论 -
c++简单对象池(或连接池)的实现
在服务器的开发中,对象池或者连接池的使用有两种特别的使用场景:一是对象的产生和销毁会消耗很大,二是对象的数量受到限制,比如mysql的连接对象。这个时候就可以采用池化的技术来解决该问题。池化的意思就是将对象一开始创建好放进池中,当需要时,从里面去,不需要时,在放回池中。#ifndef __OBJECT_POOL_H__#define __OBJECT_POOL_H__#include <...原创 2019-08-19 18:42:35 · 362 阅读 · 0 评论