c++
wanglei5695312
这个作者很懒,什么都没留下…
展开
-
海明码校验
海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。 推导并使用长度为m位的码字的海明码,所需步骤如下: 1、确定最小的校验位数k,将它们记成D1、D2、…、Dk,每个校验位符合不同的奇偶测试规定。 2、原有信息和k个校验位一起编成长为m+k位的新码字。选择k校验位(0或1)以转载 2010-12-03 09:50:00 · 2318 阅读 · 0 评论 -
按位与、按位异或、按位取反
<br />& 按位与 <br />| 按位或 <br />^ 按位异或 <br />1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 <br />例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。 <br />按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清转载 2010-07-18 16:44:00 · 3981 阅读 · 0 评论 -
应用程序之间互相通讯的几种方法
<br />沈炜 <br /> 应用程序之间的数据交换(互相通讯)一直是困扰广大程序员的难题,尽管已经出现了各式各样的解决方案,但迄今为止没有哪一种方案是完美无缺的。因此,只有学习并了解了它们的优缺点后,才能在特定的情况下选择最佳方案,以满足最终的要求。 <br /> 1、共享 <br /> 在硬盘上建立一个文件,一个应用程序往该文件里写数据(可以不关闭文件,但必须刷新缓冲区),另一个应用程序以共享方式打开这个文件并读取其中的内容,这便是最简单的一种数据交换方式。对于网络用户而言,只要两台终端上安装的转载 2010-07-13 20:13:00 · 786 阅读 · 0 评论 -
DLL+ ActiveX控件+WEB页面调用例子
<br />一、概述 <br /><br /> 因项目需要,开始学习并研究VC、DLL及ActiveX控件,网上资料找了很多,但没一个可用的或者说没一个例子可理解并运行的。没办法,自己研究吧。功夫不负有心人,终有小成了,呵呵,现在把自己学习总结了一下,献给需要的人。 <br /><br /> DLL(动态链接库): 分WIN32 DLL和MFC DLL <br /><br /> ActiveX:分ATL控件和MFC控件两类(也是一个DLL) <br /><br /> WEB:JAVASCRIPT 调转载 2010-07-15 20:00:00 · 793 阅读 · 0 评论 -
为什么使用多线程?
<br /> 1. 耗时的操作使用线程,提高应用程序响应<br />2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。<br />3.多CPU系统中,使用线程提高CPU利用率<br />4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独<br />立的运行部分,这样的程序会利于理解和修改。<br /><br /><br /> 使用多线程的理由之一是和进程相比,它是一种非常花销小,切换快,更"节俭"的多任务操作方式。在Linux系统下转载 2010-07-09 18:17:00 · 493 阅读 · 0 评论 -
GetMessage(), PeekMessage(), PostMessage(), SendMessage()
<br />GetMessage () and PeekMessage ()GetMessage 其唯一用途就是从事件对列中获得消息,并进行处理。<br />当程序在等待通过 GetMessage 传递的消息时,主事件循坏基本上是锁定的。即,如果消息队列中没有消息,则GetMessage()不会返回,一直等待..那么,如果我们要处理实时的事件循坏该怎么办呢?Windows 为我们提供了另一个函数 PeekMessage,他们的原型几乎是一样的,唯一的不同是 PeekMessage 比 GetMessage转载 2010-07-07 19:27:00 · 629 阅读 · 0 评论 -
cstring::getlength()
<br />cstring::getlength()返回的是字符个数,不是字节个数<br />如在Ansi字符集下,Cstring str = "abcde";<br />str.getlenght() = 5;<br /> <br />如在Unicode字符集下,Cstring str = "abcde";<br />str.getlenght() = 5;而不是10;<br /> <br />有的函数参数中要用到Cstring的length()大小,这时就要注意在不同的编码下是不一样的了<br />如<原创 2010-07-03 17:17:00 · 3871 阅读 · 0 评论 -
Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
<br />转自http://www.cppblog.com/greatws/archive/2008/08/31/60546.html<br />Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个/0结尾,常用于txt文本文件<br />Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的/0结尾,NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wchar_t;所以我们有时常会见到什么char*无法转换为unsigned shor转载 2010-06-26 17:28:00 · 498 阅读 · 0 评论 -
各种流行的界面换肤控件库比较
用VC做程序的时候,如果对界面样式不满意怎么办?自己从各种控件基类继承,然后自绘么?对高手来说,这虽然不能算是难题,但是仍旧比较麻烦,对新手来说,连看什么书都不好说。那就没有更好的方法么?当然有!这就要用到一类称作“界面换肤”的工具包了。且看这些工具包有什么作用。当你使用一个界面换肤工具包的后,在不改变代码的基础上(除了使用库函数),你的程序将变成另外一个样子,当然这个样子可以很cool,也可转载 2010-05-01 21:36:00 · 492 阅读 · 0 评论 -
CString,string,char*的综合比较
(一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TC转载 2010-04-30 16:25:00 · 413 阅读 · 0 评论 -
VC++的Unicode编程
<br />一、什么是Unicode<br /> 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FFH)被称为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其它符号。<br /> 这种字符编码规则显然转载 2010-06-25 22:32:00 · 462 阅读 · 0 评论 -
SQLite在VC下的使用
一、SQLite简介SQLite 是用C语言编写的开源数据库,主要用于嵌入式,你也可以把它集成在自己的桌面程序中,也有人将其替代Access,用作后台数据库。SQLite 支持多数SQL92标准,例如:索引、限制、触发和查看支持。支持 NULL、INTEGER、REAL、TEXT 和 BLOB 数据类型,支持事务。二、下载SQLiteSQLite可以到官方站点下载http://www.sq转载 2010-05-22 21:55:00 · 914 阅读 · 0 评论 -
Sqlite DB
前一阵字做项目(嵌入式linux),由于要保存大量的数据,而且最长要保存30天的时间。本来打算保存到文件中,每次启动应用程序的时候重新解析一遍,可是当数据量很大的时候,就出现效率的问题了。所以最后还是放弃了使用文件的打算,决定使用数据库存取数据。linux下的数据库也很多,有开源的,也有收费的。对于我们来说,肯定要使用开源的数据库。以前用过Berkely DB,但是需要licience。所以结转载 2010-05-23 21:57:00 · 550 阅读 · 0 评论 -
ANSI字符,UNICODE,宽字符,窄字符,多字节字符集
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述原创 2010-05-24 16:49:00 · 761 阅读 · 0 评论 -
[硬件知识补充]同步和异步的区别
答案一:1.异步传输 通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。起始位对应于二进制值 0,以低电平表示,占用 1 位宽度。停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽度。一个字符占用 5~8位,具体取决于数据所采用的字符集。例如,电报码字符为 5 位、ASCII码字符为 7 位、汉字码则为转载 2010-08-09 16:36:00 · 695 阅读 · 0 评论 -
vc中,unicode项目向多字节字符集项目移植.
<br />1: 首先更改项目属性为多字节字符集.<br />2: 对于所有 L"字符串", 去掉L, 或改为=> _T("字符串") <br /> ps1: _T是个自动替换的宏, 可以根据编译条件的不同, 替换成不同的东西. <br /> ps2:若想使用_T,要先包含<tchar.h>文件<br />3: 替换所有的 WCHAR 为 TCHAR<br />4: 替换所有的Unicode函数为非Unicode函数 eg _wsplitpath_s => _splitpath_s<br /转载 2010-06-03 14:58:00 · 801 阅读 · 0 评论 -
四种程序启动画面的制作方法(VC)
使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序);二是可以用来显示软件名称和版权等提示信息。怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程序。 1.利用组件库中的Splash Screen组件实现 (1)用Photoshop等制作启动画面图像,保存为bmp格式。 (2)用Appwizar转载 2010-05-31 10:19:00 · 1143 阅读 · 0 评论 -
常用数据类型使用转换详解
BSTR变量<br />BSTR bstrValue = ::SysAllocString(L"程序员"); <br />char * buf = _com_util::ConvertBSTRToString(bstrValue); <br />SysFreeString(bstrValue); <br />AfxMessageBox(buf); <br />delete(buf); CComBSTR变量<br />CComBSTR bstrVar("test"); <br />char *buf = _c转载 2010-07-25 11:17:00 · 658 阅读 · 0 评论 -
给对话框程序制作启动画面
<br />对于比较大的程序,在启动的时候都会显示一个画面,以告诉用户程序正在加载,或者显示一些关于软件的信息,如Visual C++,Word, PhotoShop等。<br />这些启动画面在Visual C++中怎么实现呢?对于文档/视图结构的程序,可以直接使用VC提供的SplashWnd组件。可是在基于对话框的程序却不能使用SplashWnd组件。因此只能自己来实现此功能。<br />因为显示启动画面的同时还要进行程序的加载工作,所以要用到多线程。MFC区分了两种不同类型的多线程:用户界面(UI)线转载 2010-05-31 11:22:00 · 1494 阅读 · 0 评论 -
[VC编程] CEdit改变字体大小的方法
方法很多,这里讲解两种比较简单的方法,也是从google上搜索来的。方法一:CWnd* pEdit; pEdit = GetDlgItem(IDC_EDIT_ONE); ASSERT(pEdit != NULL); HFONT hFont = (HFONT)::GetStockObject(SYSTEM_FIXED_FONT)转载 2010-05-30 18:05:00 · 1475 阅读 · 0 评论 -
c++多字节与宽字节字符串转换(windows平台)
转自http://www.asarea.cn/showdiary.jsp?id=193许久没有写技术日志了,今天写一篇关于字符串转换的。大家都知道,在标准c++中有string和wstring,前者为多字节ANSI字串,后者为宽字节wide字串(UTF-16)。在一些应用中常常需要在二者之间以及与UTF-8之间进行字串转换,这里提供一个自己写的类,用于之间的转换。原理是利用windows的ap转载 2010-05-27 16:21:00 · 1204 阅读 · 0 评论 -
Cstring转换成String
////////////////////Cstring转换成String/////////////#ifdef UNICODE USES_CONVERSION; str1 = W2A(cstr1); str2 = W2A(cstr2);#else str1 = (LPCTSTR)cstr1; str2 = (LPCTSTR)cstr2;#endif原创 2010-05-27 16:17:00 · 524 阅读 · 0 评论 -
C语言里的左移和右移运算
在普通的C编程里位运算的使用机会不是很多,所以常常被人遗忘.前天做学校的数据结构作业,题里需要求2的n次幂,正好用到左移,我就顺道把左,右移给复习了一遍.先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用int i = 1;i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有转载 2010-07-18 17:10:00 · 948 阅读 · 0 评论 -
CAsyncSocket,CSocket内幕及其用法
〖文章转载或出处〗≡中国电子技术信息网≡ 网址:www.CETINet.comSocket API,CAsyncSocket,CSocket内幕及其用法jmcooler(原作) 关键字 Socket CAsyncSocket CSocket CSocketFile 同步(阻塞) 异步(非阻塞) Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别。虽然同步好用,不费劲,但不能满足一些应用场合,其效率也很低。转载 2010-07-19 16:26:00 · 1080 阅读 · 0 评论 -
mapx经典代码
// MyMapView.cpp : implementation of the CMyMapView class // #include "stdafx.h" #include "MyMap.h" #include "MainFrm.h" #include "MyMapDoc.h" #include "MyMapView.h" #include "转载 2010-04-10 10:33:00 · 2997 阅读 · 0 评论 -
Mapx中画线的代码(VC++)
文章来源:郭☆郭★宝☆贝 文章作者: 发布时间:2006-10-24 CMapXPoints Pnts; //点集对象 CMapXFeatureFactory FeaFac; CMapXLayer Layer; CMapXFeature Feature; CMapXStyle Style; double centerX,centerY; //得到地图转载 2010-04-09 15:55:00 · 1557 阅读 · 0 评论 -
CView类初始化
OnInitinstance是全局性的初始化,一般编程习惯是所有的全局变量,如果有需要初始化的,应放在这里进行初始化。比如有一个全局字体CFont g_SystemFont,则这个字体的Create应该放在OnInitinstance中执行,并且失败时应返回FALSE以退出程序,表示它是程序运行的基本,失败则程序不可以执行。 CView的构造只应该放一些和视相关且独立于文档的初始化语句。所谓独立于转载 2010-04-07 16:03:00 · 3128 阅读 · 0 评论 -
CStringList不完全用法
CStringList是CString链表,在MFC编程中STL之外的另一选择,用起来更加简洁.插入数据:AddTail();AddHead()删除数据:RemoveAll();RemoveAt();RemoveHead();RemoveTail()取得元素个数:GetCount()取得某个元素值:GetAt(cstringList.FindIndex(index))//index转载 2009-12-13 15:36:00 · 4723 阅读 · 0 评论 -
你知道windows NT和windows 区别吗?
Microsoft Windows NT(New Technology)即视窗NT是由微软公司发行的操作系统。 Windows NT是基于OS/2 NT的基础编制的。OS/2是由微软和IBM联合研制,分为微软的Microsoft OS/2 NT与IBM的IBM OS/2。协作后来不欢而散,IBM继续向市场提供先前的OS/2版本,而微软则把自己的OS/2 NT的名称改为Windows NT,即转载 2009-12-08 10:42:00 · 2941 阅读 · 0 评论 -
全局变量/全局静态变量/静态变量/静态局部变量/局部变量
静态变量静态变量的类型说明符是static,静态变量属于静态存储方式,但属于静态存储方式的不一定是静态变量,如外部变量(全局变量)就属于静态存储方式,但不是静态变量。必须有static加以定义才是静态变量,或静态全局变量。对于自动变量(局部变量),属于动态存储方式。当自动变量用static定义后就成为了静态自动变量。或静态局部变量,从而成为静态存储方式。局部变量以前的累计值不会通过调用转载 2010-02-05 15:43:00 · 707 阅读 · 0 评论 -
_beginthread()与_beginthreadex()区别
1. 已知windows下可以用如下方法创建线程.1) CreadThread(…). API2) _beginthread(…). CRT3) _beginthreadex(…). CRT4) AfxBeginThread(…). MFC_beginthreadex()和_beginthread()长的很转载 2010-02-04 15:55:00 · 855 阅读 · 0 评论 -
Visual Studio 2005调试程序时老是提示"生成“cmd.exe”时出错".
------ 已启动生成: 项目: bstore, 配置: Debug Win32 ------ 正在编译资源清单... 正在链接... 正在嵌入清单... 项目 : error PRJ0003 : 生成“cmd.exe”时出错。 生成日志保存在“file://e:/来自C盘/我的文档/Visual Studio 2005 /Projects/bstore/bstore/Debug/Build转载 2009-12-04 13:55:00 · 1742 阅读 · 0 评论 -
mpi&&c++
由于在stdio.h及mpi的C++接口中都定义了SEEK_SET,SEEK_CUR,SEEK_END,所以在编译采用mpi的c++程序时会出错,解决方法是在源代码中,#include 之前取消以下宏定义: #undef SEEK_SET #undef SEEK_ CUR #undef SEEK_ END 另一种方法就是在命令行中加入:-DMPICH_IGNORE_CXX_SEEK原创 2009-11-26 14:40:00 · 842 阅读 · 0 评论 -
error c101008a: Failed to save the updated manifest to the file
编译错误>mt.exe : general error c101008a: Failed to save the updated manifest to the file "./Debug/TransSliderControl.exe.embed.manifest" 解决方法: Project Properties -> Configuration Properties ->转载 2009-11-23 19:49:00 · 1054 阅读 · 0 评论 -
优先队列priority_queue
头文件:priority_queue:是一种按值排序的队列容器。元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 。priority_queue类的主要成员: priority_queue(); //默认构造函数,生成一个空的排序队列 priority_queue(const queue&); //拷贝构造函数 priority_queu转载 2009-11-21 20:27:00 · 677 阅读 · 0 评论 -
static全局变量与普通的全局变量有什么区别?
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件转载 2009-11-20 17:58:00 · 723 阅读 · 0 评论 -
ifstream与ofstream
ifstream与ofstream 0推荐在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。在进行I/O操作时,首先是打开操作,使流和文件发生联系,建转载 2009-11-16 14:54:00 · 655 阅读 · 0 评论 -
二维字符串数组的初始化-动态内存分配
#include "stdio.h"void main(){ char *str1[2][2]={"FF","F9","FA","F9"};//初始化一个二维字符串数组 char *str;//定义一个一维字符串变量 int a,b; int i,j; int result1; for (i=0;i {转载 2009-12-13 15:38:00 · 5545 阅读 · 0 评论 -
find_first_of()和 find_last_of()
string 类提供字符串处理函数,利用这些函数,程序员可以在字符串内查找字符,提取连续字符序列(称为子串),以及在字符串中删除和添加。我们将介绍一些主要函数。1.函数find_first_of()和 find_last_of() 执行简单的模式匹配,如在字符串中查找单个字符c。函数find_first_of() 查找在字符串中第1个出现的字符c,而函数find_last_of()查找最后一个转载 2009-12-13 15:41:00 · 31887 阅读 · 0 评论 -
链接器都干了些什么?
目前项目在不停的增长,我想还是在它规模仍旧很小的时候把它的模块分清楚,不同模块分到不同的 projects 里面,这里面出现了很多问题,也反映了我知识上的很多不足。 1 , project 最后的输出要设置清楚,有的是 static lib ,有的是 dll ,有的是 exe ,不一样的输出要设置好,它们都是 linker 的成果,但是以不同的方式应用。 2 , project depen转载 2009-12-22 16:01:00 · 953 阅读 · 2 评论