
C++
sjhuangx
这个作者很懒,什么都没留下…
展开
-
OpenCV绘制箭头
转载自:http://tmjfzy.blog.163.com/blog/static/664470252012225101017794/代码:#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"using namespace cv;转载 2015-11-24 11:43:15 · 3798 阅读 · 1 评论 -
Hex和ASCII相互转换函数
以下两个函数用于实现十六进制和ASCII码值之间的转换int Hex2Ascii(char* hex, char* ascii){ int len = strlen(hex), tlen, i, cnt; for (i = 0, cnt = 0, tlen = 0; i<len; i++) { char c = toupper(hex[i]); if ((c>='0'&&原创 2015-11-19 09:29:22 · 21982 阅读 · 0 评论 -
C++字符串格式化文章
选自《优快云 社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char转载 2015-11-20 21:06:08 · 390 阅读 · 0 评论 -
VS2013中.cpp引用上一级目录的stdafx.h找不到定义(解决)
stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 但是在VC中如果原文件和stdaf原创 2015-11-26 10:18:40 · 8938 阅读 · 0 评论 -
opencv计算图像的水平投影和垂直投影
本文介绍使用opencv实现计算一幅图像的水平投影和垂直投影,代码如下:class HorizontalProjection{private: int maxLine;//255最大行位置 int maxNum;//255最多的数目 int minLine;//0最大行位置 int minNum;//0最多的数目public: HorizontalPro原创 2015-11-29 22:17:19 · 25946 阅读 · 2 评论 -
C++ 获取变量名称 & 获取类型的名称
本文转载自:http://cherishlc.iteye.com/blog/17500131、获取变量名称 采用如下宏定义即可,这个宏定义将表达式x直接转换为对应的字符串: #define varName(x) #x#define printExp(exp) cout<<#exp<<"为:\t\t"<<(exp)<<endl#define printExpToString(转载 2015-12-16 16:41:53 · 35393 阅读 · 1 评论 -
封装与重用演变史
本文转载自:blog.youkuaiyun.com/mingojiang目录概述一、明码重用与封装二、静/动态库/COM2.1静态库2.2动态库2.3COM技术三、跨语言/跨进程/跨机器四、分布式技术4.1WebService4.2WCF技术五、总结概述经常喜欢思考些问题,一直对编程技术的封装与重用的发展有些想法,想写下来,不过纯属人个观转载 2015-12-05 09:46:36 · 761 阅读 · 0 评论 -
error C2146 和C4430 错误
最近在使用程序编辑机器人控制程序,但是在编译程序时遇到error C2146和error c4430错误,经过网上查阅资料发现是头文件之间包含顺序引起的。如果存在a.h和b.h这两个头文件,在a.h包含b.h头文件,同时在b.h又包含a.h头文件,那么就会有可能形成循环包含的问题。解决办法是避免出现头文件循环包含,另外有些情况可能是头文件的包含顺序存在问题,通过将头文件包含的顺序调换一下就可以原创 2016-01-25 20:52:25 · 5528 阅读 · 1 评论 -
MyString类的实现--C++ primer plus 读书笔记
本文实现一个简单的string类,参考自c++ primer plus这本书,源码如下://======================================================// FileName: MyString.h// Author: sjhuangx// Date: 2016-03-03// Desc: a single string class原创 2016-03-03 10:43:34 · 788 阅读 · 0 评论 -
c++new失败处理
在C语言中如果malloc/calloc分配内存失败的时候,会返回一个空指针,但是在C++中使用 new 分配内存的时候,标准规定new分配失败时会抛出异常,因此不能使用如下的方式判断new是否成功,int *p = new int[SIZE];if(NULL == p){return;}如果分配失败,则以上代码将是没有意义的,因为new失败是会抛出bad_alloc异常,原创 2016-03-29 20:36:58 · 1749 阅读 · 0 评论 -
一个简单的Makefile
Makefile是用来配置程序的编译过程,下面是一个简单的Makefile文件。# A simple Makefile for the test project# By sjhuangxCC = gccCXX = g++CFLAGS = -Wall -std=gnu99CXXFLAGS = -Wall -std=c++11DEBUG = Yifeq ($(DEBUG原创 2016-03-19 15:04:06 · 647 阅读 · 0 评论 -
C++模板类重载"<<"未定义错误
在使用C++的模板类进行编程的时候,重载"这个问题的原因是由于C++的模板编译机制造成的,解决问题的方式是在类中声明标识,具体如下:templateclass CMatrixGraph{friend ostream & operator (ostream &os, CMatrixGraph &g);.......}templateostr原创 2016-02-23 21:33:42 · 1826 阅读 · 0 评论 -
VS2013下安装Boost库
本文讲解在VS2013中编译和配置Boost库。1.下载并解压 Boost到Boost的官网上下载http://www.boost.org/users/history/version_1_60_0.html,这里选择的是最新版的boost下载后解压到本地目录中,以管理员身份执行boostrap.bat文件,执行完成之后会生成bjam.exe文件。2. 编原创 2016-04-04 15:09:38 · 756 阅读 · 0 评论 -
C++实现动态多维数组
在C++中多维数组是利用数组的数组来实现的,即int *ia = new int[n];可以动态创建包含n个元素的数组,如果把每个元素换成数组就成为多维数组了,int (*ia)[10];ia = new int[10][10];不能使用int* ia[10]来声明多维数组,此时表示的是包含10个指向int*元素的数组,上面创建的数组需要指定第二维后面元素的大小,为了创建不定大小的动态多维数组,我原创 2016-04-04 16:16:15 · 4828 阅读 · 0 评论 -
boost在cygwin下的安装和使用
以下是百度百科对boost的介绍: Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,原创 2016-04-04 17:30:38 · 2131 阅读 · 0 评论 -
结构体和类的内存字节对齐详解
本文转载自:http://www.jizhuomi.com/software/567.html先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天都十分纠结。后来万般无奈请教一个朋友,才获悉可能是结构体对齐的事,一查、一改,果真如此转载 2016-05-11 19:43:45 · 821 阅读 · 0 评论 -
使用VScode进行C/C++开发
Visual Studio Code是微软推出的一款轻量级的编辑器,主要针对web前端开发如javascript、html等,但是其支持插件的功能,于是人们为其开发了众多其他语言的插件,如C/C++语言的插件,在linux系统下没有Visual Studio这样强大的IDE,看到VSCode上有基于Clang的C++提示插件,于是就尝试使用VSCode进行C++开发,以下是需要进行的配置。首先原创 2016-05-01 23:36:14 · 53338 阅读 · 2 评论 -
MFC屏蔽ESC和回车键退出对话框的消息
使用类向导为对话框添加PreTranslateMessage(MSG* pMsg)虚函数,并在在函数内添加一下代码://屏蔽回车键和ESC键消息BOOL CTestDlg::PreTranslateMessage(MSG* pMsg){ // 屏蔽ESC和回车键退出对话框的消息 if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam原创 2015-11-23 16:11:31 · 1690 阅读 · 0 评论 -
VS2013 Windows API 串口通信编程--多线程异步方式
转载自:blog.youkuaiyun.com/mingojiang1.串口通信基础提到串口让人想起并口,它们是计算机中两个比较重要的通信方式.串口:也叫COM口,把字节的二进制位按位列队进行传输,每个字节占一个固定的时间长,速度慢,但是传输距离远,有9针和25针两种,是阳插座(插座中有针凸起),目前25针较少使用;Modem\鼠标\USB口\老式摄像头等都是用串口.并口:把字节的二进转载 2015-11-17 13:57:08 · 18052 阅读 · 2 评论 -
对话框自适应大小ReSize
1.在对话框头文件中添加POINT old;void Resize();2.在对话框初始化函数中OnInitDialog 添加以下代码CRect rect;GetClientRect(&rect);old.x = rect.right - rect.left;old.y = rect.bottom - rect.top;int cx = GetSystemMetrics(SM_CXFULL转载 2015-11-16 22:07:31 · 2060 阅读 · 0 评论 -
vs2013下使用opencv静态库
使用VS2013和opencv进行图像处理程序的开发,当把程序放到一台没有安装opencv的电脑上运行的时候,需要重新安装opencv程序才能运行,这样会显得很麻烦,使用opencv提供的静态链接库可以避免这个麻烦。参考了一些网上的教程,都死通过自己编译opencv获取静态库的,实际上opencv的安装目录下就提供了已经编译好的静态库,一般在{opencv目录}/\build\x86\vc12\s原创 2015-06-04 19:15:59 · 3240 阅读 · 0 评论 -
assert(pMap != NULL)错误的解决办法
最近在使用mfc进行多线程程序开发的过程中,由于需要实时在某个控件上进行数据更新操作,因此将某个控件进行了变量绑定,通过改变变量进行数据更新操作,但是每次都显示错误导致程序不能运行,具体指向wincore.cpp文件的972行: // should also be in the permanent or temporary handle mapCHandleMap* pMap =原创 2015-06-07 10:43:34 · 7207 阅读 · 1 评论 -
求解最大子序列算法及比较
#include #include #include #include "../StopWath.h"using namespace std;int A[2000];int N = sizeof(A) / sizeof(A[0]);int Sum1, Sum2, Sum3, Sum4;CStopWatch stopwatch;double time1, time2, tim原创 2015-07-13 20:30:05 · 461 阅读 · 0 评论 -
string中C4996错误解决方法
error C4996: 'std::basic_string,std::allocator>::copy': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable th原创 2015-08-23 21:32:51 · 1050 阅读 · 0 评论 -
matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用, 这样就可以实现matlab和C++混合编程的目的。1. 使用matlab生成dll文件首先需要带有mcc编译器的matlab软件,这个可以通过在matlab命令行中输入: !mcc命令来查看然后再命令窗口原创 2015-10-21 15:27:31 · 15587 阅读 · 11 评论 -
mfc加载透明图片
加载透明的png图片到界面中原创 2015-11-03 13:16:49 · 1209 阅读 · 0 评论 -
mfc中使用CEdit为编辑框设置字体
mfc中使用CEdit为编辑框设置字体原创 2015-11-04 12:58:47 · 13380 阅读 · 0 评论 -
VS2013下OpenCV249的配置
vs2013下opencv249的配置原创 2015-11-06 10:58:40 · 1656 阅读 · 0 评论 -
VC串口编程的实例2
本例程采用异步串口操作,我们只介绍软件部分,RS485接口接线方法不作介绍,感兴趣的读者可以查阅相关资料。 打开VC++6.0,新建基于对话框的工程RS485Comm,在主对话框窗口IDD_RS485COMM_DIALOG上添加两个按钮,ID分别为IDC_SEND和IDC_RECEIVE,标题分别为“发送”和“接收”;添加一个静态文本框IDC_DISP,用于显示串口接收到的内容。1. 添加串口转载 2015-11-12 11:14:16 · 985 阅读 · 0 评论 -
VC串口编程的实例1
本例程采用同步串口操作,我们只介绍软件部分,RS485接口接线方法不作介绍,感兴趣的读者可以查阅相关资料。 打开VC++6.0,新建基于对话框的工程RS485Comm,在主对话框窗口IDD_RS485COMM_DIALOG上添加两个按钮,ID分别为IDC_SEND和IDC_RECEIVE,标题分别为“发送”和“接收”;添加一个静态文本框IDC_DISP,用于显示串口接收到的内容。1. 在RS485转载 2015-11-12 10:56:53 · 3054 阅读 · 0 评论 -
VC串口API通信详解
windows平台下使用VC进行串口通信详解转载 2015-11-12 10:20:49 · 10158 阅读 · 0 评论 -
opencv实现图像细化效果
在图像处理中,有时候我们会想要提取图像的骨架,这是就需要对图像进行细化,opencv中没有直接进行细化的算法,网上大部分的细化算法都是基于以前IplImage结构的,对于想要使用新的C++接口的Mat结构需要进行一定的修改,本文的细化方法是基于Mat数据结构的,使用的是OpenCV2.4.9版本。 参考自:http://blog.youkuaiyun.com/qianchenglenger/article/d原创 2015-11-14 16:21:52 · 5382 阅读 · 1 评论 -
c++ 十进制、十六进制和BCD的相互转换
转载自:http://www.cppblog.com/tdweng/articles/139022.html#include #include #include using namespace std;///////////////////////////////////////////////////// // //功能:二进制取反 // //输入:const un转载 2015-11-20 15:20:03 · 14966 阅读 · 1 评论 -
CString转const char*
在VC编程中有时候会需要将CString的字符串转为const char*类型,这是可以使用一下的函数来完成转换char* strToChar(CString str){ char *ptr;#ifdef _UNICODE LONG len; len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL原创 2015-11-15 20:08:09 · 778 阅读 · 0 评论 -
easy-size控件自适应大小的使用
1.在 stdafx.h 头文件中添加#include "EasySize.h"在对话框中的OnInitDialog()函数中不能设置对话框大小和位置的信息,如// 对话框窗口大小初始化:: SetWindowPos( this-> m_hWnd, HWND_BOTTOM, 10, 10, 1000, 730, SWP_NOZORDER);如果设置了需要将其注释掉,不然会导致控件不显示2.在对话框原创 2015-11-16 22:01:24 · 1545 阅读 · 0 评论 -
OpenCV在win32下不显示图像
在win32下新建一个OpenCV的工程,配置好OpenCV的环境后使用imshow()函数却显示不出图像,程序如下:#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"using namespace cv;// 添加OpenCV图原创 2015-11-16 20:49:56 · 1570 阅读 · 0 评论 -
C++中两个大整数相乘
输入为用字符串表示的两个大的整数,输出为用字符串表示的相乘结果。#include #include #include #include using namespace std;#define MAX_SIZE 1024templatevoid PrintVector(const vector& vec){ for (T x : vec) { cout << x <<原创 2016-05-17 15:16:52 · 3751 阅读 · 0 评论