
C++
忘世麒麟
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
年月日转时间戳(2)
碰到一个需求,将字符串"20121231"日转换为时间戳,很简单,但是经常碰到,记录一下:// 年月日转时间戳long GetTime(string strEndDate){ string year = strEndDate.substr(0,4); string mon = strEndDate.substr(4,2); string day = strEndDate.substr(6,2); tm local; //本地时间 local.tm_year = atoi(yea原创 2020-06-04 14:31:17 · 1372 阅读 · 0 评论 -
封装C++风格的rdkafka库
项目中用到了kafka,系统是C++开发的,没有现成的可集成API,查阅github,发现有rdkafka,这个C库,挺好用的,但是,他依然不够简洁,因此,对他做了一下封装.#ifndef _KAFKAMQ_H_#define _KAFKAMQ_H_#include <vector>#include <string>#include <librdkaf...原创 2019-12-27 23:20:19 · 1072 阅读 · 0 评论 -
C++ 时间戳和时间的互相转换已经变形
#include <time.h>void makeTime(){ time_t t; //秒时间 tm* local; //本地时间 char buf[128] = { 0 }; t = time(NULL); //获取目前秒时间 cout << t << endl; local = localtime...原创 2019-10-23 11:17:06 · 1256 阅读 · 0 评论 -
Boost 学习之算法篇 clamp
clamp 头文件clamp.hpp包含两个函数,用来“夹紧”一对边界值之间的值。(就是返回在一对边界值——[参数2,参数3]中最接近(或者等于)参数1的值。) 调用函数clamp (v, lo, hi),则可能有一下三种返回值: 当v小于1o 返回lo 当hi小于v 返回hi翻译 2016-02-02 10:34:59 · 5918 阅读 · 0 评论 -
Boost 学习之算法篇 mismatch
mismatch 头文件'mismatch.hpp'包含了stl算法mismatch的两个变体。该算法在两个序列中查找第一个破坏两序列一致性的元素位置。 在(被提倡使用的)C++14 前,该算法std::mismatch带了三个迭代器一个用来做比较的可选谓词。前连个迭代器[first1,last1)定义了一个序列范围,第二个迭代器first2定义了第二个序列的起翻译 2016-02-01 13:56:48 · 1312 阅读 · 0 评论 -
Boost 学习之算法篇 equal
equal 头文件'equal.hpp' 包含一个STL算法 equal 的两个变种。该算法测试两个序列是否包含相同的值。在(被提倡使用的)C++14 以前的版本中,stl::equal 函数带有三个迭代器以及一个可选的用作比较的谓词。前两个迭代器[first1,last1)定义了一个参数序列,第三个迭代器first2定义了第二个参数序列的开始位置。算法假设第二个序列长度与第一个一翻译 2016-01-29 15:14:14 · 1896 阅读 · 0 评论 -
Boost 学习之算法篇 partition_point
partition_point 头文件 'partition_point.hpp'包含单个算法partition_point的两种变体。假设给出一个划分好的序列以及一个谓词,该算法将找出序列中划分的位置;比如说,找出序列中的第一不满足谓词的元素 。(注释:比如说我们给一个序列0,6,7,3,14,15,谓词是10,那么该函数返回的第一个位置是元素14的位置;所谓的“划分好的序列翻译 2016-01-29 09:17:51 · 1316 阅读 · 0 评论 -
Boost 学习之算法篇 is_permutation
原文链接:http://www.boost.org/doc/libs/1_60_0/libs/algorithm/doc/html/the_boost_algorithm_library/CXX11/is_permutation.htmlis_permutation 头文件 'is_permutation.hpp' 包含单个is_permutation 算法的六个不同变种.翻译 2016-01-26 17:14:25 · 783 阅读 · 0 评论 -
Boost 学习之算法篇 is_partitioned
is_partitioned头文件 'is_partitioned.hpp' 包含is_partitioned 算法的的两个变种. 该算法测试一个序列T是否按照某个谓词来划分的;换句话说满足该为此的元素都在序列的开头。常用的is_partitioned 函数带有一个参数序列和一个谓词参数.假如序列按照谓词划分则返回true。is_partitioned 有两种调用格式:第一种是翻译 2016-01-26 14:40:39 · 892 阅读 · 0 评论 -
Boost 学习之算法篇 is_sorted
is_sorted头文件 包含一个方法用来判断一个值序列是否是排好序的。函数 is_sorted(sequence) 判断一个值序列是否严格按照某些标准排序。假如判断之前没有声明任何的比较方法 ,那么使用std::less_equal(比如看该序列是否是非降序的)。官方APInamespace boost { namespace algorithm { template翻译 2016-01-26 14:03:48 · 1234 阅读 · 0 评论 -
Boost 学习之算法篇 one_of 与 one_of_equal
one_of头文件 'boost/algorithm/cxx11/one_of.hpp' 包含4个名为one_of的常用算法. 该算法测试序列中的所有参数,假如测试这些元素发现其中只有一个含有特别的属性,则返回true.常用的one_of 函数带有一个参数序列以及一个候选值。假如用候选值与参数序列中所有元素只有一个返回true,则该函数将返回true。常用的one_of_equal翻译 2016-01-26 10:38:04 · 834 阅读 · 0 评论 -
Boost 学习之算法篇 none_of 与 none_of_equal
头文件 'boost/algorithm/cxx11/none_of.hpp' 包含4个名为none_of的常用算法. 该算法测试序列中的所有参数,假如测试这些元素发现其都没有某一特性,则返回true.常用的none_of 函数带有一个参数序列以及一个候选值。假如用候选值与参数序列中所有元素比较都返回false,则该函数将返回true。常用的none_of_equal 函数带一个参数序翻译 2016-01-26 09:57:12 · 1099 阅读 · 0 评论 -
Boost 学习之算法篇 any_of 与 any_of_equal
any_of 与any_of_equal这个算法测试一个序列的元素,假如有任何一个元素拥有特定的属性,则返回true。此处的特定指的是(和算法所带的参数比较能够返回true)常用的any_of 带一个参数序列和一个候选值。如果候选值对于序列中的任何元素比较至少有一个返回true则该算法返回true。常用的any_of_equal带一个参数序列和一个值.如果序列中的任何元素与传递的值比较翻译 2016-01-26 09:22:32 · 1666 阅读 · 0 评论 -
Boost 学习之算法篇 all_of 与 all_of_equal
来源:http://www.boost.org/doc/libs/1_54_0/libs/algorithm/doc/html/algorithm/CXX11.html事实上这篇文章开始的不算是“翻译”,也不算是“原创”。我仅将在官网看到的文档,结合自己的理解放到这里让学习者可以有所收获。/*头文件“boost/algorithm/cxx11/all_of.hpp” 包括了all_of翻译 2016-01-25 15:08:42 · 937 阅读 · 0 评论 -
Boost 学习之算法篇 gather
gather 头文件'boost/algorithm/gather.hpp'有算法gather的两个变体函数。gather() 带了用一对迭代器定义的元素集合,移动里面的元素到序列中的一个合适的位置(枢轴位置)以满足传递进去的谓词。算法移动元素是稳定的。经过算法移动元素后,返回一对迭代器,迭代器指定范围的元素满足谓词的顺序。原文链接:http://www.boost.or翻译 2016-02-02 13:54:44 · 1503 阅读 · 0 评论 -
Boost 学习之Align-序言部分
序言这个库提供了:对齐函数、内存分配对齐函数、内存释放对齐函数、对齐分配器、对齐分配适配器,对齐删除器、某类对对齐需求的特性、一个暗示指针对齐的宏、一个函数来验证指针的值是否对齐。The Boost.Align Library组件描述align对齐函数指针aligned_alloc,aligned_free翻译 2016-03-02 17:32:07 · 1338 阅读 · 0 评论 -
使用C/C++ 手动编写一个读取ELF文件的程序
目标:读取 64位/32位 elf文件,打印section,segments,sectiom to segments mapping一,elf文件解析 这部分内容请参考互联网,已经有很多博客说的很清楚了。二,代码布局 代码非常简单,一个头文件用于声明操作的类,一个cpp文件,用于实现该类,下面先介绍一下头文件的相关声明和组成。/***********...原创 2019-07-07 18:48:25 · 5548 阅读 · 1 评论 -
C++ 以多字符为分隔符分割字符串
发现,之前写的博客中,有一种分割方式是在是有点落后.因此改进了一下,这里主要是第一个函数,百度中可以查到.#include #include #include using namespace std;char *strsep(char **stringp, const char *delim){ //判断stringp是否为空,提高程序的容错性 char *s; const c原创 2016-05-31 15:32:47 · 5564 阅读 · 2 评论 -
年月日转时间戳
一个笔记:如何将一个手动输入的时间值转换为时间戳 string data("1999-11-10"); string year; string month; string day; int pos = data.find("-"); year = data.substr(0,pos); data = data.substr(po原创 2016-09-09 14:05:23 · 3789 阅读 · 0 评论 -
通用型线程池框架 C++
class _ThreadPool{ class _Job { public: /// 任务处理 virtual void doJob(); }; class _Thread { public: private: _ThreadPool* _pool; _Job* _job; public: static void* _threadFunc(void原创 2016-05-30 08:54:26 · 995 阅读 · 0 评论 -
MFC 中解析一个路径
MFC 中解析一个路径 CString target("E:\\Downloads\\MobaXterm_v8.1\\MobaXterm.log"); int n = target.ReverseFind('\\');//从后往前寻找 CString tmp = target.Mid(n+1,target.GetLength()-n); //获取后缀 MobaXterm.log t原创 2016-05-13 10:01:54 · 1777 阅读 · 0 评论 -
文本文件格式浅析以及转换
Windows7 文本文件目前支持4种编码格式:utf-8,unicode,unicode big endian,ansi这些格式的定义,自行百度,来看一下他们具体的不同。先创建一个文本文件,默认是ansi格式,然后另存为其他三种格式。往里面随便写点数据使用ue打开这些文件,使用ue的16进制功能,看到txt文件拥有如下属性:ansi:没有任何特性unicode:FF FEun原创 2016-04-29 20:21:42 · 1200 阅读 · 0 评论 -
如何判断一个txt文件的编码格式
准备工作:用windows自带的记事本工具,创建一个文件,里面写几句话。然后使用另存为按钮,分别另存为为:ANSI、UTF-8、Unicode、Unicode Big endian四种格式。主程序如下:创建一个基于对话框的MFC程序,在对话框中拖拽一个按钮,双击后添加如下代码到这个按钮响应的函数中:void CFileCodeDlg::OnBnClickedButton1(){ /原创 2016-04-27 10:41:24 · 18542 阅读 · 2 评论 -
读取和使用xml文件的一般步骤
使用到了tinyxml这个开源的类 CString strConfigFile = _T("XXX.xml"); TiXmlDocument doc(strConfigFile); if (doc.LoadFile()) { TiXmlElement* pRootNode = doc.RootElement(); TiXmlElement* pBlkNode = NULL;原创 2016-04-26 15:37:43 · 1156 阅读 · 0 评论 -
Boost 学习之算法篇 hex
原文链接:http://www.boost.org/doc/libs/1_60_0/libs/algorithm/doc/html/the_boost_algorithm_library/Misc/hex.htmlhex 头文件“boost/algorithm/hex.hpp” 包含了两个算法:hex、unhex以及他们各自的三个版本的变体。hex将一个序列元素转换为十六进制数,翻译 2016-02-29 13:25:43 · 4683 阅读 · 0 评论 -
Windows 如何在创建指定目录以及复制文件
由于网上的帖子基本上是创建一级目录的,比如说使用CreateDirectory()API.但是,使用下面的方法可以在指定路径创建目录//原文件位置CString sour("C://Users//AAA//Desktop//文件备份//1.txt");//创建目录CString dest("C://Users//AAA//Desktop//新文件备份//");::_原创 2016-03-10 10:57:14 · 1743 阅读 · 0 评论 -
Boost 学习之Align-Rationale部分
Rationale动态内存分配C++11 为类类型添加了动态内存对齐的能力。不幸的是。::运算符,new 内存分配函数,new表达式,默认的分配器,std::allocator并不支持为超出内存对齐的数据动态分配内存。该库提供了分配函数,分配器,分配器适配器,以及删除器,他们都是能感知对齐的。问题解法::operatornew(std::si翻译 2016-03-03 11:17:33 · 1490 阅读 · 0 评论 -
Linux上相对路径问题
Linux上编程时候,文件的相对路径(特别是打开文件的时候):指的是"相对于生成可执行文件位置的相对路径",而不是"相对于当前所编辑文件位置的相对路径"!切记!原创 2015-11-17 10:11:52 · 2526 阅读 · 0 评论 -
Linux生成和使用so库
最近,项目要求将处理用户的操作的函数做成so文件,然后找了一下相关的资料。现将整理的内容描述如下。首先是会碰到的问题:1 如何制作动态链接库2 如何让程序找到动态链接库关于问题一:略过!(不是重点,网上文章很多)关于问题二:比如我们生成了一个动态链接库test.so。此时该文件在我们的工作目录下,和我们调用的程序在一起,这个时候执行程序会提示 error w原创 2015-10-26 10:00:34 · 2247 阅读 · 3 评论 -
MFC 鼠标定位于控件上动态弹出通知的实现方法
目的:通过最简单的方法将原创 2014-04-08 10:35:48 · 1703 阅读 · 0 评论 -
MFC Page 和Sheet 控件使用例子
目的:学习使用page 和 sheet 控件步骤:一、新建一个对话框类型的工程利用insert dialog添加两个对话框打开新添加的对话框,右击classWizard 选择新添加一个类,如下图单机ok添加类名和basic类型分别为“Cpage1,CPropertyPage”“ Cpage2,CPropertyPage”如下图:在两个对话框里选中按钮“OK”“C原创 2013-12-23 16:33:47 · 4918 阅读 · 1 评论 -
C++ 文件操作
C++ 将文件中的2000行数据,每一行倒序输入源文件:#include#include#includeusing namespace std;int main(){ string temp; string content(""); string outcontent(""); //文件读(将文件的内容读出) ifstream fin("D:\原创 2013-11-29 08:54:42 · 1079 阅读 · 0 评论 -
手把手 MFC 绘图入门
目标:学习如何使用画笔画常见图型。1. 使用MFC AppWizard(exe)创建一个默认的单文档应用程序(Ex_Draw)。2. 在CEx_DrawView::OnDraw函数中添加下列代码: void CRactangView::OnDraw(CDC* pDC){/* CRactangDoc*pDoc = GetDocument();原创 2013-11-09 11:14:26 · 6055 阅读 · 0 评论 -
树控件 加载磁盘文件/某一目录 层次显示所有文件的实现
一、目的:熟悉在树控件上的相关操作。在用户指定加载某个目录或者磁盘后,可以通过层级结构显示该目录或磁盘下的所有文件,以及文件对应的系统图标,在用户双击摸个文件或者文件夹后可以调用对应的程序打开文件、文件夹;在界面上的Edit Control 上键入关键字可以在用户加载的目录中查找所有对应项,并显示出来。二、总体效果图:三、界面总体布局:建立一个基于对话框的程序。两个Edit Control原创 2013-11-18 13:40:05 · 4639 阅读 · 0 评论 -
MFC 如何生成右键菜单
创建一个基于对话框的应用程序è对话框改名为”创建弹出式菜单”ResourceView选项卡è右击Insertè插入一个菜单资源,编辑此菜单资源结果如下:在对话框的头文件(项目名)Dlg.h中添加声明一个CMenu对象m_Menu在OnInitDialog方法中调用LoadMenu方法,代码如下:M_Menu.LoadMenu(IDR_MENU1); //加载菜单资源原创 2013-11-08 16:52:29 · 2534 阅读 · 0 评论 -
MFC 自定义消息实现与响应
网上关于“MFC自定义消息”相关的文章实在有点杂,至少我查这部分资料的时候很头疼。好吧,为了让看这篇文章的码农同行少走点弯路,我不介意在这里一步一步的告诉您,自定义消息应该如何实现。按照步骤走,我相信你的程序可以运行!一、目标:在父窗口的Edit Control中写入信息,单击确定按钮后在子窗口的Edit Control中显示出来。其中发送消息是父窗口,接受消息是子窗口。 二、原创 2013-11-07 19:56:01 · 3262 阅读 · 0 评论 -
MFC 控件随窗口同步变大的实现
首先建立一个基于对话框的MFC程序打开类向导,为该对话框选中消息:WM_SIZE,双击值他会生成这样一个函数:OnSize.双击这个函数.在函数体里面添加如下代码: CDialogEx::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码 float fsp[2]; POINT Newp; //获取现在对话框的大小(VS2005中是CPOIN原创 2013-11-18 13:29:16 · 2319 阅读 · 0 评论 -
调用DLL找不到函数名或者函数乱码问题
本博客来自:点击打开链接最近简单研究了一下dll的导出函数,整理了一下 1.导出函数名的问题dll导出函数最简单的语法是void__declspec(dllexport) fun();由于它默认的是c++的调用约定cdecl,因此导出的函数就变成了?fun@@YAXXZ如果直接取函数名fun,就会找不到函数,有两种方法可以解决这个问题转载 2013-10-31 14:41:48 · 6028 阅读 · 0 评论 -
C++ 文件读写
#include#include#includeusing namespace std;int main(){ string temp(""); string content(""); string outcontent(""); //文件写(将内容写入文件) ofstream fout("test.txt"); if(!fout) { cout<<"open erro原创 2013-10-22 09:10:44 · 987 阅读 · 0 评论 -
MFC 创建和操作Excel2007 文件
目标:生成一个excel文件,该文件可以使用exc原创 2014-05-20 12:47:44 · 10338 阅读 · 6 评论