
C++ programming
文章平均质量分 55
wangicter
金融产品研发
展开
-
Linux环境下Protobuf完整安装和使用教程
Linux环境下Protobuf完整安装和使用教程目标下载和安装环境配置一个例子1、报文定义2、报文生成3、使用报文4、编译程序5、常见问题:目标本文将教会一个完全的新手如何搭建自己的protobuf Linux环境,并配置好编程环境,并使用一个例子帮助你学会使用protobuf.下载和安装1、下载protobuf安装包$ git clone https://github.com/protocolbuffers/protobuf.git2、安装依赖库$ cd protobuf/$ ./au原创 2020-08-30 20:58:35 · 21295 阅读 · 5 评论 -
#pragma once 和 #ifndef ... #define ... #endif 的区别【转载】
<br /><br />在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作。<br /> 1. #pragma message 指令<br />message能够在编译消息输出窗口中输出相应的消息,这对于源代码信息的控制非常重要的。格式如下:<br />#pragma message(“消息文本”)<br />编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确原创 2011-02-16 11:08:00 · 771 阅读 · 2 评论 -
skinmagic对VC中程序窗口的换肤
一直以来没怎么关心过程序界面的开发,最近想对程序界面的美化学习一下。下面先展示一下这次开发所实现的效果:程序我已经上传到优快云上面了,同时我所使用的skinmagic包也已经上传。程序主要实现了:1. 窗口的基本美化:菜单,窗口2. 换肤菜单3. 主窗口和子窗口同时换肤下面先引用别人的我认为相当全面的一个总结(引自:http://cool.worm.blog.163.com/blog/static/64339006200952503917995/):文件说明SkinMagicLib.h 必须的头文件,请添原创 2011-03-10 22:24:00 · 6239 阅读 · 8 评论 -
MFC中CString,int,string,char * ,char[] 之间互转
<br /><1> <br />(1)string 转 CString <br />CString.format("%s", string.c_str()); <br /> <br />(2)char 转 CString <br />CString.format("%s", char*); <br /> <br />(3)char 转 string <br />string s(char *); <br /> <br />(4)string 转 char * <br /原创 2011-03-17 18:20:00 · 12068 阅读 · 0 评论 -
CHtmlCtrl在VC中的使用
CHtmlCtrl是一个可以在VC中使用的用来显示网页的控件。这个控件极大的方便了程序的开发和扩展,以前局限于VC环境下的一些开发完全可以采用HTML来实现。当然,像读取数据库、本地文件处理等操作最好还是采用VC来编写,如果采用JS来写,由于用户机子上浏览器权限设置的不同程序容易正常运行(鄙人经验,两天开发的程序因为权限问题付诸东流,教训啊)。因此,将VC和CHtmlCtrl结合开发,一方面保证了程序的安全性和高效性,同时还保证了程序展示的美观性。首先去网上找一下这个CHTMLCTRL控件,只包含两个文件即原创 2011-03-29 18:18:00 · 3705 阅读 · 2 评论 -
VC中连接mdb数据库及其数据读取方法
最近在做一个兼职,涉及到利用vc连接mdb数据库的问题。先介绍一下第一种方法: _ConnectionPtr m_pConnection; CoInitialize(NULL); //对连接进行初始化 m_pConnection.CreateInstance(__uuidof(Connection)); try { m_pConnection->Open(_T("Provider=Microsoft.JET.OLEDB.4.0;Data Source=d:原创 2011-03-29 16:40:00 · 12608 阅读 · 1 评论 -
VC下ctreectrl的使用方法及节点前图标添加方法
<br />CTREECRTL是VC下界面编程中必须掌握的一个基本控件。因此很有必要自己亲手实践一下。<br />首先声明一个树:<br />CTreeCtrl m_tree;<br />然后定义节点,生成一棵树即可:<br /> HTREEITEM hParentItem; m_tree.ModifyStyle(0,TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES); hParentItem = m_tree.I原创 2011-03-29 16:59:00 · 7427 阅读 · 1 评论 -
vc下禁止按钮连续点击的方法
<br /> 最近接手的项目需要(其实就是一个桌面小软件),需要通过MFC上的上一页和下一页按钮,控制CHTMLCTRL的显示。但CHTMLCTRL显示是有延迟的,一旦按钮点击过快,该控件会无法及时响应。所以,需要做一个禁止按钮连续点击的功能。<br /> <br />该过程主要使用ontimer来实现的。<br />1. 先点击对话框,找到可添加的事件(属性里面)WM_TIMER,添加ontimer事件。<br /> 注意,ontimer事件,在vc 6.0 和vs2008中的声明是有区别的。<br /原创 2011-04-05 16:06:00 · 5609 阅读 · 2 评论 -
in_addr 转换为 string(char*)
char* hexToCharIP(struct in_addr addrIP){ char* ip; unsigned int intIP; memcpy(&intIP, &addrIP,sizeof(unsigned int)); int a = (intIP >> 24) & 0xFF; int b = (intIP >> 16) & 0xFF; int c = (intIP >> & 0xFF; int d = intIP & 0xFF; if(原创 2011-04-09 20:46:00 · 7183 阅读 · 0 评论 -
C++中获得文件大小
#include using namespace std;int main(int argc, char* argv[]){ifstream in("file.txt");in.seekg(0, ios::end); //设置文件指针到文件流的尾部streampos ps = i转载 2011-07-20 13:58:47 · 883 阅读 · 0 评论 -
char *p = new char[256]; delete p; / delete[] p; 哪个对 为什么
原帖地址:http://topic.youkuaiyun.com/u/20071027/12/a31bf228-7b4f-40b2-be41-e3b859f643d4.htmlchar *p = new char[256]; delete p; delete[] p;转载 2011-08-31 20:41:28 · 5670 阅读 · 0 评论 -
C++中内存泄漏的检测方法介绍
本文介绍C++中内存泄漏的检测方法。 首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。 最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外转载 2011-09-02 16:18:09 · 765 阅读 · 0 评论 -
htons(), htonl(), ntohs(), ntohl()
Convert multi-byte integer types from host byte order to network byte orderPrototypes#include uint32_t htonl(uint32_t hostlong);ui原创 2011-09-02 14:49:51 · 734 阅读 · 1 评论 -
一个跨平台的 C++ 内存泄漏检测器
简介: 内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理转载 2011-09-02 16:06:19 · 739 阅读 · 1 评论 -
掌握 Linux 调试技术
在 Linux 上找出并解决程序错误的主要方法Steve Best (sbest@us.ibm.com)JFS 核心小组成员,IBMSteve Best 目前在做 Linux 项目的日志纪录文件系统(Journaled File System,JFS)的工作。St转载 2011-09-02 16:38:43 · 614 阅读 · 1 评论 -
明晰C++内存分配的五种方法的区别
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,它们的释放编转载 2011-09-02 16:09:06 · 493 阅读 · 0 评论 -
使用BoundsChecker
BoundsChecker是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误。 BoundsChecker能检测的错误包括:3sNews.Net——3S社区&资讯平台 t b U ^ N @ i7p'w M V B e1)指针操作和内存、资源泄原创 2011-09-02 16:30:24 · 543 阅读 · 1 评论 -
跨多个交换机VLAN的配置方案设计(H3C)
网络概要: 如下图所示.接入层交换与汇聚层交换机相连.在每个接入层交换上有三个VLAN.实现跨交换机的VLAN的配置与通讯. 一:链路的不同. A:接入链路.是用于连接主机和交换机的链路.通常情况下主机并不知道自己属于哪些VLAN,主机转载 2011-09-07 10:58:05 · 6007 阅读 · 0 评论 -
C++ - extern "C"用法浅析
1. 头文件#include 2. 功能设置某一信号的对应动作3. 函数原型void (*signal(int signum,void(* handler)(int)))(int); 分解来看: typede转载 2011-09-18 19:44:46 · 649 阅读 · 0 评论 -
C++ - C++ signal的使用
1. 头文件#include 2. 功能设置某一信号的对应动作3. 函数原型void (*signal(int signum,void(* handler)(int)))(int); 分解来看: typede转载 2011-09-18 19:38:41 · 1026 阅读 · 0 评论 -
fopen函数和fread函数、fwrite函数
fopen(打开文件)相关函数 open,fclose表头文件 #include定义函数 FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符转载 2011-08-25 11:04:50 · 1262 阅读 · 0 评论 -
C++ Vector 使用心得
标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的转载 2011-08-24 14:01:13 · 969 阅读 · 0 评论 -
QT简介
Qt 简介Qt(发音同 cute)是一个跨平台的C++开发工具,有时又被称为C++部件工具箱。Qt被用在KDE桌面环境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是挪威Qt Software原创 2011-08-25 10:52:08 · 1982 阅读 · 0 评论 -
浅谈C中的malloc和free
一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的转载 2011-08-25 11:04:00 · 708 阅读 · 1 评论 -
使用setsockopt TCP_NODELAY禁用 Nagle算法
Nagle算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用 程序系统的效率。(Nagle虽然解决了小封包问题,但也导致了较高的不可预测的延迟,同时降低了吞吐量。)vc下面socket编程,使用阻原创 2011-08-25 10:43:15 · 20032 阅读 · 0 评论 -
setsockopt设置socket状态
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,转载 2011-08-25 10:47:51 · 1453 阅读 · 0 评论 -
手把手教你学习网络编程(1)
手把手教你学习网络编程(1)目录:1) 什么是套接字?2) Internet 套接字的两种类型3) 网络理论4) 结构体5) 本机转换6) IP 地址和如何处理它们7) socket()函数8) bind()函数9) con转载 2011-08-25 11:03:00 · 828 阅读 · 0 评论 -
htonl() htons()及inet_ntoa() inet_addr()的用法
现在我们很幸运,因为我们有很多的函数来方便地操作 IP 地址。没有 必要用手工计算它们,也没有必要用"首先,假设你已经有了一个sockaddr_in结构体ina,你有一个IP地址"132.241.5.10" 要储存在其中,你就要用到函数inet_addr(),将IP地址从 点转载 2011-08-25 14:22:05 · 775 阅读 · 0 评论 -
C++的XML编程经验――LIBXML2库使用指南
写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)转载 2011-08-29 10:39:53 · 708 阅读 · 0 评论 -
MSG_NOSIGNAL
linux下当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出 BrokePipe,程序会退出。为此,send()函数的最后一个参数可以设MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。原创 2011-08-29 15:54:41 · 3276 阅读 · 0 评论 -
sprintf函数的用法
自《优快云 社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf转载 2011-08-30 10:51:34 · 554 阅读 · 0 评论 -
xmlDocument来操作xml文档
它的作用是解析xml文档,将其转换为对象,使你可以在程序中对其操作 例如如下的xml文档: localhost sa jiayuan 使用xmlDocument对其一些简单操作如下: 读取节点中的一个属性 XmlDocument doc=new XmlDocument(); doc.Load("config.x转载 2011-10-25 22:31:35 · 918 阅读 · 0 评论 -
sizeof运算符和size_t类型比较
*sizeof的作用sizeof是c的运算符之一,用于获取操作数被分配的内存空间,以字节单位表示.这里指的操作数,可以是变量,也可以是数据类型,如int,float等.所以就可以通过它来获取本地c库定义的基本类型的范围。 *sizeof的使用1.对于一般变量,形式2种:sizeof a 或 sizeof(a);2.对于数据类型,必须使用带括号的方式,如sizeof(int)转载 2011-12-28 09:59:39 · 1205 阅读 · 0 评论 -
详细介绍JAVA和C++区别
http://zhiwenweb.cn/jszx/bckf/javaxx/201110/29586.htmlJAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它原创 2012-02-04 15:41:34 · 781 阅读 · 0 评论 -
C++与Java异常处理的区别
异常的捕获1) Java中的异常捕获在Java中异常捕获有以下几种方法:1.1 try…catch…块 用try来设定一段能够预防所有异常的程序。紧跟在try后面,可以有一个或多个catch子句来指定我们想要捕获的异常类型。try…catch的格式一般为: try{…}catch(…){ … }catch(…){ …原创 2012-02-04 15:40:31 · 4904 阅读 · 0 评论 -
C++ using namespace std 详解
一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 因此,当使用时,相当于在c中调用库函数,转载 2012-01-04 14:38:03 · 701 阅读 · 0 评论 -
正则表达式语法
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。这里有一些可能会遇到的正则表达式示例:Visual Basic Scripting EditionVBScript匹配/^\[ \t]*$/"原创 2012-02-14 19:07:42 · 658 阅读 · 0 评论 -
(int&)a和(int)a, (int)&a, &a的区别
#include #include #include #include using namespace std;int main(){ float a = 1.0f; cout << "(int)a:"<<(int)a <<endl; cout << "&a:"<<&a <<endl; cout << "(int &)a :"<< (int &)a原创 2012-02-16 21:04:24 · 1889 阅读 · 0 评论 -
学习编写测试桩之declspec (dllexport)篇
动态库不能直接运行,也不能接受消息,他提供一些函数供执行他的程序或者动态库调用。 windows API中的所有函数都包含在DLL中,其中有几个最为重要:Kernel32.dll,用户管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。静态库:函数和数据被编译转载 2012-02-28 22:15:42 · 971 阅读 · 0 评论 -
Visual C++中动态链接库技术浅谈
摘要:本文比较了Visual C++所支持的三种动态链接库,列出了各自不同的特点和应用场合,详细地描述了三种动态链接库的建立和调用的方法。 关键字:动态链接库;导出函数;调用 引言 较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序的EXE文件中,会转载 2012-02-28 22:44:21 · 657 阅读 · 0 评论