自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 浮点数在intel上的二进制存储结构,以及如何判断一个浮点数是否为整数

在这里,我就不解释那些ieee的术语,因为大家只要一搜索,到处都有。这里我用一个直观的实例解释float浮点数在intel机器上的存储方式,并给出计算方法,让人能一目了然的明白如何将二进制存储的浮点数的转换成我们常见的十进制形式,并解释为何有的浮点数不能被精确表示,如12.34常

2011-03-18 20:15:00 1543

原创 标准C++的字符串操作

使用过MFC会发现CString比std::string好用,而使用过C#,会发现System.String用起来更爽。标准C++是否也可以得心应手地处理字符串呢?答案是肯定的,我接下来 会介绍如何实现以下操作 字符串的format char*, wchar_t*, _bstr_t, CComBSTR, basic_string, System.String间的转换Trim操作 字符串的分词字符串与各种类型间的转换 字符串的format CString与System.String

2011-02-24 16:02:00 2692

原创 vs2008 快捷键大全

<br />命令名 快捷键 说明<br />编辑.折叠到定义<br />Ctrl + M,Ctrl + O<br />自动确定在代码中创建区域的逻辑边界(如过程),然后隐藏它们。<br />命令名 快捷键 说明<br />编辑.折叠到定义<br />Ctrl + M,Ctrl + O<br />自动确定在代码中创建区域的逻辑边界(如过程),然后隐藏它们。<br />编辑.注释选定内容<br />Ctrl + K,Ctrl + C<br />使用编程语言的正确注释语法将代码的当前行标记为注释。(vc2003)

2011-02-23 13:43:00 641

原创 数据对齐

数据对齐的原因平台移植原因:不是所有的硬件平台都能访问任意地址上的任意数据;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出异常(如MAC,要求数据对齐,不对齐就抛出异常)性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。因为访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。对齐规则<br />       每个特定平台上的编译器都有自己的默认“对齐系数(也叫对齐模数)”。程序员可以通过预编译命令#pragma pack(n), n=1,2,4,8,16来改变这

2011-02-22 11:14:00 546

原创 在Windows下使用TTS(C#代码)

    TTS(text-to-speech),语音合成,可以将一段文字转化为语音。有关TTS想了解更多可以访问:http://en.wikipedia.org/wiki/Speech_synthesis。Windows有屏幕朗读的功能,如何使用系统自带的语音合成技术,想知道吗,那就继续往下读吧。    打开VS新建一个C#工程,添加References,在Com栏目下选择Microsoft Speech Object Library(如果找不到,说明没有安装,到网上搜搜,安装一个)。完了之后,在Ref

2011-02-12 12:12:00 3925

原创 Lua与CSharp间的通信

准备工作       在C#中使用Lua脚本,需要用到Luainterface。Luainterface是Lua的C#封装,它是一个开源的项目,SVN地址为:http://luainterface.googlecode.com/svn/trunk。 C#代码中调用Lua函数 Lua代码(保存为路径c:/test.lua),定义了函数add: function add(num1,num2)     return num1+num2;

2011-02-11 07:36:00 5811 1

原创 防止IDA逆向工程的花指令。

<br />发现,要使IDA的反汇编失败的最简单花指令,就是在c/c++的函数里头使用retn指令。例如:<br />#include <stdio.h>#include <stdlib.h>#pragma auto_inline(off)int __stdcall Proc(int n){ char* strParam = "A test to inspect stack, n=%d, a=%d."; int a = n; __asm { push label;

2010-12-14 01:29:00 5805

原创 无光驱安装redhat企业版

<br />       终于把redhat企业版给装上了,其间差点就去买个刻录机了。现在和大家分享下如何无光驱安装redhat企业版。<br />下载Universal-USB-Installer.exe,选择try some other live linux ISO。选择镜像文件,和U盘(U盘要够大,我用8G的),记得选择格式化。待Universal-USB-Installer.exe将镜像解压到U盘后,把镜像文件和image底下的initrd.img也拷到U盘根目录底下。<br />      然后重

2010-12-04 23:51:00 3980 1

原创 unicode工程下,标准库保存unicode字符到文件

<br />标准c++库的文件操作,没有把生成unicode文件的方法,保存在文件里的都是多字节。需要将unicode中文写入文件,需要转换为多字节,否则写入失败<br />basic_ofstream<wchar_t> os(L"c://output.txt");<br />wchar_t wcs[] = L"杨俊";<br />os.imbue(locale("chs"));//没有这句,写入中文会失败<br />os<<wcs;<br />os.close();

2010-06-13 11:36:00 561

原创 标准库下的宽字符转unicode

<br />_tsetlocale(LC_ALL, _T("chs")); //设置为简体中文<br />wchar_t * wstr =  L"杨俊";<br />char mbstr[10] = {0};<br />wcstombs(mbstr, wstr, sizeof(mbstr));

2010-06-13 11:29:00 396

原创 类型转换后发生的内存泄漏

进行如下的操作 struct THREADPARAM{ CString m_csGamePath; CString m_csOutputPath; volatile BOOL* m_pbStop;};THREADPARAM* pThreadParam = new THREADPARAM;LPVOID pParam = (LPVOID)pTh

2009-12-01 14:41:00 504

原创 VS2008输出的调试信息双击能够定位到行

_RPTn函数,格式化的时候使用"%hs(%d)/n", filename, line。 关键的几点:文件和行号要参数要放在可变参数的第一位输出换行后才有效注意%hs(%d)的搭配使用 

2009-11-25 21:05:00 1030

原创 内存DC,CBitmap的问题

 CDC memDC;memDC.CreateCompatibleDC(pDC);CBitmap bitmap;bitmap.CreateCompatibleBitmap(pDC, m_pImage->GetWidth(), m_pImage->GetHeight());//没问题//bitmap.CreateCompatibleBitmap(&memDC, m_pImag

2009-11-09 15:07:00 456

原创 vs 2008 类的结构

 在类A有虚函数f1与f3,数据成员int a,类B继承自A,有虚函数f1与f2,数据成员 int b,结构如下图所示:                         class A                          虚函数表 A虚函数表A的地址     int a                      

2009-10-15 23:37:00 260

原创 static_cast

static_cast 除了能进行基本类型的转换,也可以进行类指针间的转换,与reinterpret_cast的区别在于,两个进行相互转化的类指针要有有关联(有继承关系)和dynamic_cast是有区别的,它不进行RTC,因而转化的结果可能是不安全的。 

2009-10-09 11:31:00 260

原创 虚函数

虚函数根据对象类型调用相应的类中的函数,注意在基类构造函数中,派生类尚未出现,这是this指针还是基类的,调用的虚函数也是基类的

2009-10-09 10:34:00 248

原创 std vector

 std vector 中的成员函数 pop_back   删除末尾的元素,如果被删除的元素是类对象,就对它进行销毁,如果删除的元素是指针,则不销毁

2009-10-08 21:20:00 348

原创 关于拼音检索字符

比如输入G 就能显示出拼音以G打头的汉字.实现思路:根据GB2312汉字的区位码,建立区位码与拼音的对应关系,因为一定范围内的汉字区位码的拼音是一样的,例如,如果汉字的区位码在(20317,20319]范围内,那么其拼音为“a”,以此类推。 如果是Unicode转换为GB2312即可。 ps:道听途说,未经验证,实现

2009-09-28 18:05:00 357

原创 GetAsyncKeyState 与 GetKeyState

GetKeyState 获得消息队列中的按键消息返回值为 负 按键被按下对于caps Lock 返回值为1标示打开,与信号灯的状态一致 GetAsyncKeyState获得硬件的按键信息SHORT sKeyState = GetAsyncKeyState(VK_LBUTTON);sKeyState (sKeyState & 1) && (sKeyState > 0) /

2009-09-25 11:11:00 773

原创 std::string 的构造函数

std::string 的构造函数 __CLR_OR_THIS_CALL basic_string(const _Elem *_Ptr)会开辟新的内存空间,将_Ptr拷贝到新的空间里,因而下面的写法是错误 char* GetValue(){   string s("Hello");   return s.c_str();} int main(){   c

2009-09-24 10:15:00 4734

原创 VS2008中 如果类的虚方法为inline,在其中typeid(*this) == typeid(CDerive)之类的语句判断会出错

rt

2009-09-23 22:08:00 698

原创 /MT: ok --- /MD: __xxxfuncxxx already defined in MSVCRT.lib(MSVCR90.dll)

You cannot link a .lib that was compiled with /MT with code compiled with /MD.   有个静态的lib,有个dll想将它import。 结果,lib中的msvcrt中的函数链接不上,解决的办法是不import lib 而是将dll 与 lib 的源代码重新一块编译

2009-09-22 11:28:00 844

原创 使用GetGuiResources查看GDI泄漏

用GetGuiResources界定可能发生内存泄漏的代码,比较代码块前后GDI对象的数目,查找发生泄漏的代码块。

2009-09-14 18:57:00 2310

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除