C/C++用法类
文章平均质量分 77
gxj1680
取之于网,用之于网
很多文章摘录或转帖,便于查阅相关资料,如有侵犯您的权利,请告诉我,我会尽快删除..
展开
-
(转)WebBrowser Control的一个简单C++封装
PomeloWu原创©,转载请指明出处 想在自己的窗口中放上一个WebBrowser Contorl,但又不想用MFC;可惜网上除了MFC/ATL以外,使用WebBrowser的资料少得可怜。 在CodeGuru上找到Jeff Glatt 的一篇文章Display a Web Page in a Plain C Win32 Application,写成于转载 2014-02-14 18:56:32 · 2086 阅读 · 0 评论 -
(转)被误解的C++ 之 优化variant实现
优化variant实现 上一次,我大概制作了一个variant类型,并设法赋予这个类型同C++内置类型几乎一样的行为。但是,具体实现起来,倒是有点望而生畏。想想看,如果我的variant需要包容5种类型,那么单单一个操作符,就需要5×5+1=26个操作符重载(那单独一个是variant类型操作数的重载)。所有二元操作符都是如此。 通过蛮力来实现variant,尽管可能,但着实愚蠢。我们必须转载 2011-12-22 15:46:56 · 1602 阅读 · 0 评论 -
(转)关于内存对齐
一.计算struct的size有两个原则: #pragma pack(n) n是编译器的对齐字节数(1)struct中各成员按照对齐原则:在为当前变量(设为a)分配内存时,要参考之前所有变量的偏移量之和(设为d),d必须是min(n,sizeof(a))的倍数,否则编译器会自动在最后补上缺少的字节数。(2)待所有变量都分配完毕之后,还要比较当前所占内存(设为c)与struct中长度转载 2011-12-22 15:40:08 · 601 阅读 · 0 评论 -
(转)typedef的四个用途和两个陷阱
用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符转载 2011-12-22 14:32:08 · 434 阅读 · 0 评论 -
(转)C语言中的位运算
在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~转载 2011-12-21 14:43:37 · 454 阅读 · 0 评论 -
C语言中符号的优先级-摘录
优先级问题表达式可能误以为的操作实际操作.的优先级高于*->操作符用于消除这个问题*p.fp指向对象的变量f(*p).f对p取偏移f,作为指针,然后进行解除引用操作*(p.f)[]高于*int *ap[]原创 2011-12-21 14:25:53 · 615 阅读 · 0 评论 -
(转)C++回调函数用法
一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而 那个函数在需要的时候,利用传递转载 2011-12-20 11:26:32 · 457 阅读 · 0 评论 -
(转)C++中多态的实现原理
C++中多态的实现原理多态是面向对象的基本特征之一。而虚函数是实现多态的方法。那么virtual function到底如何实现多态的呢?1 基类的内存分布情况请看下面的sampleclass A{void g(){.....}};则sizeof(A)=1;如果改为如下:class A{public: virtual void转载 2011-12-20 11:53:32 · 645 阅读 · 0 评论 -
(转)UTF8转换为UNICODE(UTF8ToUnicode)
<br />//注:Linux下使用,未知Window下的情况<br /> 1. <br />/**********************************************************************************/<br />/* */<br />/* Function: UTF8ToUnicode */<br />/* Description: Convert UTF8 byte sequence to Unicode string */<br />/* *转载 2011-04-29 14:30:00 · 5112 阅读 · 0 评论 -
(转)C++箴言:理解typename的两个含义
<br />2005-12-05 09:14作者:fatalerror99出处:BLOG责任编辑:方舟问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? <br /><br />template<class T> class Widget; // uses "class"<br />template<typename T> class Widget; // uses "typename"<br /> 答案:没什么不同。在声明一个 t转载 2011-04-21 17:16:00 · 660 阅读 · 1 评论 -
(转)_beginthread还是CreateThread
<br />程序员对于Windows程序中应该用_beginthread还是CreateThread来创建线程,一直有所争论。本文将从对CRT源代码出发探讨这个问题。<br />I. 起因<br />今天一个朋友问我程序中究竟应该使用_beginthread还是CreateThread,并且告诉我如果使用不当可能会有内存泄漏。其实我过去对这个问题也是一知半解,为了对朋友负责,专门翻阅了一下VC的运行库(CRT)源代码,终于找到了答案。<br />II. CRT<br />CRT(C/C++ Runtime转载 2011-04-06 17:07:00 · 1168 阅读 · 0 评论 -
(转)C++继承中的重载、覆盖和隐藏
<br />C++继承中的重载、覆盖和隐藏<br /> 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错!<br /> 我们先来看一些代码及其编译结果。<br /> 实例一: <br /> #include "stdafx.h" <br /> #转载 2011-04-07 10:23:00 · 560 阅读 · 0 评论 -
(转)内存对齐 #pragma pack(n) __declspec(align(#))
<br /><br />内存对齐 #pragma pack(n) __declspec(align(#))<br />2008年11月13日 星期四 16:10<br />看一下这两个指令是如何影响变量在内存的存储的。<br />1、pack pragma<br /> <br />pack pragma设置了struct、union或class中各成员的对齐方式,结构成员对齐指的是成员相对于起始地址的偏移量。该指令基本用法如下:<br />#pragma pack(n)<br />它指定了结构成员按n(1,转载 2011-05-11 17:34:00 · 878 阅读 · 0 评论 -
(转)逻辑与(&)和逻辑或(|)逻辑非(~)简单介绍
位运算 前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是转载 2011-12-22 10:14:35 · 1304 阅读 · 0 评论 -
(转)C语言学习札记(5)-- 字符和字符串
1、字符常量是用以单引号括起来的字符表示的整数值;字符串是作为一个整体对待的一系列字符。字符串直接量(string literals)或称”字符串常量“是用双引号标识的。2、C语言中的字符串是用空字符(null character,‘\0’)结束的字符数组。字符串是用指向字符串中第一个字符的指针访问的。字符串的值是其第一个字符的地址。因此,把C语言中的字符串说成一个指针是正确的。转载 2011-12-22 14:31:01 · 585 阅读 · 0 评论 -
(转)续 WebBrowser 的扩展
上次写了WebBrowser这个容器( 详细参看: http://blog.csdn.net/norsd/archive/2008/09/13/2921389.aspx )今天来说说如何在 WebBrowser的基础上扩展更多的功能. WebBrowserEx : public WebBrowser , public IDocHostUIHandler转载 2014-02-14 18:53:50 · 1118 阅读 · 0 评论 -
(转)使用C++实现SDK之WebBrowser容器
一.由来 我还记还得当自认为学习完了C++语法后, 兴致勃勃的打开MFC向导,开始所谓"MFC高级自动化编程"时, 我不由喊道: 这他妈的都是些什么乱七八糟的东西啊.诚然,MFC为了方便愚蠢的程序员,的确是让人瞬间高级编程, 可是愚蠢的我们还是会用CString strTest;写出(PWSTR)strTest.GetBuffer() 这种自作聪明的用法,结果就是整个程序好转载 2014-02-14 18:52:36 · 1399 阅读 · 0 评论 -
c++下实现异形窗口(上方只显示文字其他区域穿透,下方半透明)
功能有俩个,一个透明背景,一个是上方文字处镂空(文字显示,其他空白处不显示,见下图) //上方文字处理void OperationHollowOutCharacters(){ // CRect rectCharacters(0, 0, Dialog_Width, HollowOutCharachers_Height); // if (!m_h原创 2013-06-04 16:48:40 · 3229 阅读 · 1 评论 -
(转)如何判断一个字符串是否是UTF8编码
UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。 编码原理 先看这个模板: UCS-4 range (hex.) UTF-8 octet sequence (binary) 0000 0000-0000 007F 0xxxx转载 2012-12-18 18:18:51 · 7757 阅读 · 1 评论 -
(转)C++应用程序性能优化(书)内存管理
本质上虚拟内存就是要让一个程序的代码和数据在没有全部载入内存时即可运行。运行过程中,当执行到尚未载入内存的代码,或者要访问还没有载入到内存的数据时,虚拟内存管理器动态地将这部分代码或数据从硬盘载入到内存中。而且在通常情况下,虚拟内存管理器也会相应地先将内存中某些代码或者数据置换到硬盘中,为即将载入的代码或数据腾出空间。因为内存和硬盘之间的数据传输相对代码执行来说,是非常慢的操作,因此虚拟内存管转载 2012-03-16 16:30:04 · 830 阅读 · 0 评论 -
(转)C/C++多种方法获取文件大小
#include #include #include #include #define _AFXDLLusing namespace std;void main(){ // 此文件在工程打开状态下为不可访问 char* filepath = "..\\test.ncb"; // 方法一 struct _stat info; _stat(fi转载 2012-03-31 10:53:50 · 745 阅读 · 0 评论 -
(转)看完了第二遍C++Primer,学习心得与问题
文章转自:http://hi.baidu.com/yjc0407/blog/item/525326da58ba3dd8b7fd4868.html学习C++ Primer时遇到的问题及解释chenm91感觉:l 啰嗦有时会掩盖主题:这本书确实有些啰嗦,比如在讲函数重载的时候,讲了太长一大段(有两节是打了*号的,看还是不看?),而在TC++PL转载 2011-12-28 10:04:18 · 2199 阅读 · 0 评论 -
(转)RTTI特性小究(dynamic_cast转换操作符和typeid操作符)
文章转自:http://hi.baidu.com/tangliangl_cv/blog/item/21d3c019c5c28d4643a9adf4.html要使用RTTI特性,必须包含头文件,并且要使用/GR开启运行时信息,在visual studio中打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。单击“C/C++”文件夹。单击“语转载 2011-12-28 10:03:58 · 770 阅读 · 0 评论 -
(转)io.h头文件中函数作用
write()写文件函数原形:int write(int handle,char *buf,unsigned len)用法:write(文件句柄,缓冲区地址,缓冲区字节长度);功能:将缓冲区的数据写入与handle相联的文件或设备中,handle是从creat、open、dup或dup2调用中得到的文件句柄。对于磁盘或磁盘文件,写操作从当前文件指针处开始,对于用O_APPEND选项打开转载 2011-12-28 10:03:13 · 2026 阅读 · 0 评论 -
(转)Java初学者习题20道
1.Java 源文件中最多只能有一个()类,其他类的个数不限。public类,而且这个类的类名要和文件名一致.2.面向对象程序设计的特征(封装性)(继承)(多态性)3.接口是由(抽象方法)和(常量)组成的特殊类4.用static修饰的方法是(静态方法,或类方法)5.在产生异常的方法声明中声明会产生的异常,向更高一级方法抛出异常的关键字是:throws6.转载 2011-12-28 10:02:36 · 619 阅读 · 0 评论 -
(转)C++遍历文件夹下所有文件
发现有很多优化软件 在做删除 系统冗余文件时 会把LJ文件的名字 显示在一个列表中 供用户删除.这就用到了遍历文件夹下所有文件的技术了. 于是就像自己写一个出来. 但以前都没接触过 所以查了下MSDN 输入 findfile尽然有这样的函数 暗喜还有代码实例 稍微改了下一点点的代码 如果再修改下 可以做成删除特定的一组文件 也可以自己做一个删除系统LJ的软件 有待大家去发挥想像力了 对此函转载 2011-12-22 15:42:40 · 988 阅读 · 0 评论 -
(转)C++位操作介绍
C++位操作包括两种:传统的C语言方式的位操作和C++中利用bitset容器的位操作 一、传统的C方式位操作:1.基本操作: 使用一个unsigned int变量来作为位容器。2.操作符:| 按位或操作符:result=exp1|exp2;当exp1和exp2中对应位中至少有一个为1时,result中对应位为1,否则为0。&转载 2011-12-22 14:49:34 · 502 阅读 · 0 评论 -
mmap详解
<br />http://hi.baidu.com/yoursguang/blog/item/81f77f387720022296ddd814.html<br /><br />mmap函数是unix/linux下的系统调用,来看《Unix Netword programming》卷二12.2节有详细介绍。mmap系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,当然mmap(转载 2011-01-21 10:15:00 · 771 阅读 · 0 评论 -
(转)__declspec(dllimport)和__declspec(dllexport)的区别,以及有关c/c++调用约定
<br /> DLL可以使用两种方法将公共符号导入到应用程序中或从 DLL 导出函数: <br />生成 DLL 时使用模块定义 (.DEF) 文件。 <br />在主应用程序的函数定义中使用 __declspec(dllimport) 或 __declspec(dllexport) 关键字。 <br />使用 .DEF 文件<br />模块定义 (.DEF) 文件是包含一个或多个描述各种 DLL 属性的 Module 语句的文本文件。如果不使用 __declspec(dllimport) 或 __decl转载 2011-01-10 11:05:00 · 834 阅读 · 0 评论 -
C/C++中函数指针的含义(转)
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);//这里就定义了一个指向函数的指针 函数指针不能绝对不能指向不转载 2009-06-15 15:17:00 · 724 阅读 · 0 评论 -
[C++对象模型][1]目录与参考(转)
C++对象模型系列:本系列是主要是作者经验的总结且同时参考了大量的网络文章,希望能够给C++的学习者有所帮助,但是由于作者水平有限,难免有错,希望大家能够指出,我将虚心地向大家学习,与大家共同进步!本系列的开发环境是Windows 32+VS2008。文章: 指针和引用 指针与数组 指针与字符串 堆栈与函数调用 sizeof与对象内存布局 单继承与虚函数表 多重继承与虚函数表 虚继承与转载 2009-05-27 14:50:00 · 671 阅读 · 0 评论 -
[C++对象模型][6]sizeof与对象内存布局
有了前面几节的铺垫,本节开始摸索C++的对象的内存布局,平台为windows32位+VS2008。一 内置类型的size内置类型,直接上代码,帮助大家加深记忆:<img id="Code_Closed_Image_200655" style="display: none;" onclick="function onclick(){this.style.display=n转载 2009-07-31 11:23:00 · 621 阅读 · 0 评论 -
[C++对象模型][5]堆栈与函数调用
一 C++程序内存分配1) 在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。 2) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程转载 2009-07-31 10:53:00 · 642 阅读 · 0 评论 -
[C++对象模型][4]指针与字符串
开始之前必须明确strlen的含义,原型为size_t strlen( char *str ); strlen返回字符串的长度,即null(/0)之前的字符的数量。一 char* 与 char []实例加注释:<img id="Code_Closed_Image_145503" style="display: none;" onclick="function onclick(){转载 2009-07-31 10:52:00 · 505 阅读 · 0 评论 -
内嵌汇编简介(在C++中嵌入汇编语句)
为了加速游戏,一提起汇编语言,大家也许会感到很神秘。其实如果你学起来就会发现,它并非想象中那样难。特别是内嵌汇编,由于它和C++紧密结合,使你不必考虑很多烦琐的细节(例如输入输出函数的写法),学习起来比较容易。使用内嵌汇编,特别是使用MMX指令,可以大大提高各种游戏中常见特效的速度,对于编出一个漂亮的游戏非常重要。学好汇编语言还有一个特别有趣的用处:可以观察和看懂VC++生成的汇编代码,从而更好地转载 2009-05-21 10:49:00 · 12733 阅读 · 2 评论 -
[C++对象模型][2]指针与引用
一 概括指针和引用,在C++的软件开发中非常常见,如果能恰当的使用它们能够极大的提高整个软件的效率,但是很多的C++学习者对它们的各种使用情况并不是都了解,这就导致了实际的软件开发中经常会内存泄漏,异常抛出,程序崩溃等问题。对于C和C++的初学者,那更是被它们搞的迷迷糊糊。本篇作为[深入C++]系列的第一节,我们就带领大家把指针和引用这个基本功练好。二 指针指针,指针的定义是什么呢?好转载 2009-07-31 10:38:00 · 496 阅读 · 0 评论 -
宽字符处理函数函数与普通函数对照表
宽字符处理函数函数与普通函数对照表 字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否为数字 iswgraph() isgraph() 测试字符是否是可见字符转载 2009-07-29 10:50:00 · 610 阅读 · 0 评论 -
侯捷《C++/OOP/GP/DP》讲座心得(转)
侯捷《C++/OOP/GP/DP》讲座心得 ——— 作者: naven 很高兴侯捷老师又来公司了,给我们上了四天非常生动的技术讲座,受益匪浅,现在转载 2009-07-16 17:29:00 · 883 阅读 · 0 评论 -
关于typeid —— typeid和RTTI C++
观点有一些值得商榷的地方关于typeid和RTTI的问答 问:在c++里怎么能知道一个变量的具体类型,如:c#里的typeof.还有我怎么知道一个变量的类型是某个类型的子类,也就是实现关键字IS答:1。运行时获知变量类型名称,可以使用 typeid(变量).name,需要注意不是所有编译器都输出"int"、"float"等之类的名称,对于这类的编译器可以这样使用:float f转载 2009-01-05 17:48:00 · 9716 阅读 · 2 评论 -
C和C++编程和学习文档
1 :指针变量名称以p为首字符,这是程序员通常在定义指针时的一个习惯2 :har * p; (int *)p 把p强制转换为int型 3.1 :指针的问题:指针应用时最好给予定义(初始化)这样可以保证指针的指向是程序员自己能够把握的。3.2 :指针的越界,这恐怕是最难查出的吧!转载 2009-01-05 17:38:00 · 1940 阅读 · 1 评论