C++语言
b2b160
电子爱好者
展开
-
手把手教你汉化Windows Phone 7程序(xap包汉化)
目前的Windows Phone 7正风风火火地走来,但目前大量的应用都是英文版本,这对于国人来说是个遗憾。看着鸡肠文字总不免感觉别扭。目前国内的开发前景因为还不明朗,中文的应用还不是很多,而且国外的很多应用都堪称经典,所以很多人便开始了汉化英文版本的xap来提供国内的应用供应。但目前汉化都是一些比较专业的人员提供,相信很多朋友也希望走进这个行列, 通过本傻瓜式教程,相信你可以很快掌握原创 2012-02-14 20:46:19 · 4960 阅读 · 6 评论 -
C++中重载+操作符的正确方法
用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制。但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战。本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符。考虑如下的表达式: int x=4+2;内建的 + 操作符有两个类型相同的操作数,相加并返回右值 6,然后被赋值给 x。我们可以断定内建的 + 是转载 2009-09-02 18:21:00 · 713 阅读 · 0 评论 -
在Hello World使用CPPUnit进行单元测试
//--- Hello, World! for CppUnit#include #include #include #include #include #include #include class Test : public CPPUNIT_NS::TestCase{ CPPUNIT_TEST_SUITE(Test); CPPUNI转载 2009-06-24 14:36:00 · 862 阅读 · 0 评论 -
CPPUnit使用方法初探
一、 配置cppunit的方法编译1. 编译$BASE/src/cppunit/CppUnitLibraries.dsw中的cppunit_dll项目,release版生成cppunit_dll.lib和cppunit_dll.dll,debug版生成cppunitd_dll.lib和cppunitd_dll.dll。这是CPPUnit基本类库。2.转载 2009-06-26 15:10:00 · 1687 阅读 · 0 评论 -
C99标准特性
c99是在c89的基础上发展起来的,增加了基本数据类型,关键字 ,和一些系统函数等。 其实在初学阶段C89(ANSI C)和C99的区别是不易察觉的,所以不必太在意这个。 C99有一部分是对于大字符集的优化(很多资料上写的是ANSI标准化),还加入了一些数据库函数,是C89之后的标准,我们用的C是C89标准的,C++是C89编写的,目前的C99标准其实在以前的编译器中就或多或少的支持了,目前完转载 2009-06-05 17:40:00 · 1153 阅读 · 0 评论 -
用C写CGI程序简要指南
文章摘要: CGI规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的CGI程序具有执行速度快、安全性高等特点。本文详细分析了用C语言进行CGI程序设计的方法、过程和技巧。 正文: 用C语言进行C转载 2009-08-07 10:41:00 · 9773 阅读 · 1 评论 -
STL中的string扩展,使其和VC的CString融合
估计很多朋友和我一样,用惯了VC的CString,感觉CString很方便. 不过VC的CString并非跨平台的,所以有时不得不使用STL的string.但由于习惯问题,难免感觉STL的功能不如CString,至少在使用习惯上,难以适应.例如:STL的string 的replace和CString::Replace的使用就不一样. 所以有必要对string加以改造,让其使用起来更原创 2009-07-27 14:38:00 · 2537 阅读 · 1 评论 -
获取成员函数地址的方法
关于通过成员函数指针来获得成员函数地址的方法确实比较困难。它的困难点在于必须绕过C++编译器的类型检查。像VC对成员函数指针类型检查的很严,即使是void*类型都不能转,也无法通过reinterpret_cast、dynamic_cast之类的来转。因此我这里将采取暴力手段来获取:#include using namespace std;class Test{public:void Hello(v转载 2009-05-08 16:52:00 · 2019 阅读 · 0 评论 -
iphone开发初探
本文是作者从一无所知到入门的知识学习过程,并结合自己在嵌入式开发的经验所写的技术总结文章,以供后来者学习。 苹果公司的iphone平台采用Object-c做为native language的开发,Object-c的内核是C语言的,并基于C语言实现OOP的一些特性。Object-c是对C语言的扩展,这和C++的前身Better-c有很大的相似之处,Object-c的新版本里实现了和Java类转载 2009-07-21 16:10:00 · 875 阅读 · 0 评论 -
模板元编程-编译期计算数值
比较早之前在论坛上看到一个帖子,就是输出-4在内存中的表示形式。这是我写的解答还有个比较困难的问题,就是如何在编译器拼出一个字符串?反正我是想了很久都没有不知道怎么解决这个问题。#include #pragma pack( push )#pragma pack( 1 )templatestruct data{ char c; enum { enumData = (x&0x8000000转载 2009-05-08 17:07:00 · 1441 阅读 · 0 评论 -
若干经典的字符串哈希函数(转)
// RS Hash Functionunsigned int RSHash( char * str){ unsigned int b = 378551 ; unsigned int a = 63689 ; unsigned int hash = 0 ; while ( * str) { hash = hash * a + ( * str ++ );转载 2009-04-07 15:02:00 · 1087 阅读 · 0 评论 -
VC基础教程
VC基础教程序言及版权说明 1999/09/05 我保留本栏目所有文章的版权,未经过本人允许任何机构或个人不得以任何方式转载,复制本栏目任何文章或是提供下载。如果需要转载请与作者闻怡洋联系。首先我要感谢网上的朋友给我的鼓励和支持,这是我从事教程编写的主要动力,其次丰富栏目也是站点发展本身的需要。在以后的时间中我会陆续编写教程供大家参考,转载 2009-09-01 18:40:00 · 5947 阅读 · 1 评论 -
预编译头文件Stdafx.h详细解读
预编译头文件今天在改一个很大的程序,慢慢看,慢慢改。突然发现一个.c文件,里面什么也没有,就几个头文件,我一看,我靠,这不是把简单的问题搞复杂了吗,随手删掉那个c文件。结果不能编译了,我靠:fatal error C1083: Cannot open precompiled header file: /Debug/v13_3.pch/:No such file or d转载 2009-09-07 18:14:00 · 1712 阅读 · 1 评论 -
分析C++方式构造函数调用虚函数的问题
最近在看JAVA,因为JAVA是运行期绑定,所以里面提到了一个有趣的问题,就是在构造函数里面运行虚函数的问题。构造函数里可以运行虚函数吗?我们先不讨论实际项目中是否有这个必要(至少我还没碰到过,也许即便碰到了也有其他的解决办法。),单就构造函数里调用虚拟函数的情况来做些分析。在JAVA中,如果在构造函数中调用虚拟函数的话,是可以编译通过的,也不会出现运行期错误,但他的运行结果也许不是你想要的。在JAVA当中,由于是运行期绑定,而构造函数执行的虚拟函数将是衍生类中的函数(假如衍生类对该虚拟函数进行了覆盖的话)原创 2011-04-17 00:00:00 · 11578 阅读 · 42 评论 -
金山卫士界面源码解读及界面库分离(2)
前面已经发布了分离后的Kui代码,我们继续,下面来解释该代码库的使用.首先要说下Kui框架的一些基础概念.金山界面库不使用Windows的窗口布局,只是使用Windows的窗口作为一个载体,整个窗口都只是作为一个绘制面,而Kui对窗口实行重新布局,取消了原窗口非客户区和客户区的概念.而自己对窗口划分为上中下三个部分.上部分为Header,一般作为窗口标题栏,可以放置缩小,最大化,关闭按钮, 中部分为Body,是窗口主要功能操作区域,下部分为Footer,一般作为状态显示.说明这部分主要是为了以后写XML时使原创 2011-03-20 23:15:00 · 30933 阅读 · 21 评论 -
MFC的CString的内部实现分析
<br />MFC的CString是字符串管理类,其为了实现高效率的缓冲管理,使用了引用记数及CopyBeforeWrite技术。这在一定程度上加大了其神秘感和理解难度。好在他的代码是公开的,所以可以给我们研究它的内部实现提供条件。下面就来看看到底是如何实现的。由于不同版本的MSVC其CString实现有些许差别,下面是针对VS2003来说明的。<br /> <br />由于它的基础类使用了模板技术,可以实现内存管理的定制,我们只研究MFC的默认内存管理方式。即CAfxStringMgr类提供的方式。MFC原创 2010-10-31 16:41:00 · 5753 阅读 · 0 评论 -
XP下开机回答问题才让使用的解决办法
那天看到论坛有人提出,XP系统开机回答几个问题才让使用的.心血来潮就做了下,不过还没最终完成,以后更新会在本文更新.目前还欠缺管理功能,大家测试后将在以后更新.在XP系统下测试了,Win7下的锁定未必能完美.大家测试后将把意见收集起来再对软件进行更新.程序下载http://download.csdn.net/source/2445758原文: {因家小孩要玩电脑,又不能太限制他,于是就想一个方法: 电脑开机时,回答10个问题(此回答的问题可以随机从预先设置在电脑的库中选取。这个库是我预先编制的内容,如开机原创 2010-06-10 16:35:00 · 4403 阅读 · 37 评论 -
VC++数据库技术系列(二)ADO数据库访问技术概述
前面已经了解了在Visual C++下进行数据库编程,可供选择的访问技术有许多,我们需要根据情况选择适当的技术。在此我们就来具体了解这些技术的概貌。DO对象模型组成ADO是一组由微软提供的COM组件,基于面向对象思想的编程接口。它建立在COM体系结构之上,它的所有接口都是自动化接口,因此在C++、VisualBasic、Delphi等支持COM的开发语言中通过接口都可以访问到ADO。ADO对象模型非常精炼,由三个主要对象Connection、Command、Recordset和几个辅助对象组成。原创 2010-06-06 00:41:00 · 2837 阅读 · 0 评论 -
VC++数据库技术系列(一)数据库基础知识
我们知道程序界有一个著名公式是:程序=数据+算法。这充分说明了数据在程序设计中的重要地位。而当数据规模达到一定程度的时候,为了达到数据的快速存储和快速访问,就必须使用数据库(Database)来进行数据的存储。因为数据库是按照数据结构来组织、存储和管理数据的仓库,利用数据库进行存储具有存储访问快速、管理方便、合理组织、减少数据的冗余度等优势。 数据库有很多种类型,从最简单的存储有原创 2010-05-26 00:18:00 · 2615 阅读 · 2 评论 -
以boost::function和boost:bind取代虚函数
以boost::function和boost:bind取代虚函数这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应转载 2009-11-02 14:56:00 · 1787 阅读 · 0 评论 -
C++数组成员的初始化
C++里如果将数组定义成类中的成员,将面临初始化的问题. 如下: Class A{public: A(); ~A(){}; int abc[3];} 很直观的想法是 A::A(): abc({1,2,3}){ } 很遗憾,你将见到编译提示语法错误 当然这里可以采用变通方法 A原创 2009-10-14 10:11:00 · 8287 阅读 · 0 评论 -
再谈野指针问题Free Heap block xxx modified at xxx after it was freed
Free Heap block XXXXXX modified at XXXXXX after it was freed 相信不少朋友碰到过以上问题,而往往苦于无法定位到错误的代码位置,其实出现该问题一般就是使用了野指针导致的. 那么何为野指针呢? 野指针与NULL指针不同.所谓野指针是指指针所指的内存已经回收,而继续使用该指针,导致未定义行为. 例如:原创 2009-09-17 00:21:00 · 20103 阅读 · 4 评论 -
编写易于调试的VC代码
一 程序的设计 要避免错误,首先要从好的设计开始。对于程序的设计,需考虑到程序的两个特性: 1简单性 大多数常见的错误来源于程序设计中不必要的复杂成分。一个好的设计应该反映问题本身的要求,而不必为了刻意追求“满足将来的需要”而添加不必要的特性。实际上,简单优雅的设计比那些复杂的设计更能迎合未来的需求。 2 耦合性 耦合(decoupling)性用来衡量不同对象之间的依赖程度转载 2009-09-09 10:58:00 · 1461 阅读 · 1 评论 -
WebKit代码规范
缩进使用空格而不是Tab。Tab只应该出现在有语义的文件里,如makefile文件。缩进大小为4个空格。正确: int main(){ return 0;}错误:int main(){ return 0;}在头文件中,命名空间中的代码应该被缩进。正确: // Docu转载 2009-04-17 17:25:00 · 1197 阅读 · 0 评论 -
STL排序
排序一直是数据结构中的常用算法,STL提供的排序算法非常丰富,如何有效使用就值得探讨。在网上没有找到条款31的翻译,于是我自己翻译了。--Winter如何进行排序?让我数数有几种方法。一旦程序员需对容器元素进行排序,sort算法马上就会出现在他的脑海(可能有些程序员会想到qsort,但详细阅读条款46后, 他们会放弃使用qsort的想法,转而使用sort算法)。sort是一个非转载 2009-03-03 17:48:00 · 1703 阅读 · 0 评论 -
Visual C++编译器常用选项设置
编译参数的设置。主要通过IDE的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下: /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_M BCS" /Fp"Debug/转载 2009-03-04 15:02:00 · 756 阅读 · 0 评论 -
使用DriverStudio开发WDM设备驱动程序入门
本文的读者最好有以下软件:DriverStudio2.5,Visual Studio6.0,以及Windows 2000 DDK。 用DriverWorks为 Windows 98 , Windows Me, Windows NT , Windows 2000 ,和 Windows XP 开发驱动程序简介 DriverWorks 通过提供强大并且先进的代码生成向导——Driver转载 2009-03-04 14:59:00 · 817 阅读 · 0 评论 -
vc编译器选项
vc编译器选项CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。 注意,所有编译器选项都区分大小写。 若要编译但不链接,请使用 /c。转载 2009-03-04 15:04:00 · 733 阅读 · 0 评论 -
如何在VC++6.0下实现Unicode编程
1.在Project->Setting->Link->Output->Entry-point symbol加入一个Unicode的入口(Entry)"wWinMainCRTStartup";或者直接在CPP文件中加入"#pragma comment(linker, "/entry:/"wWinMainCRTStartup/" ")"就无需在Setting中做設置了。2.还需要在Projec转载 2009-03-04 14:06:00 · 1031 阅读 · 0 评论 -
VC多线程编程_综述
VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好.一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDl转载 2009-03-04 16:14:00 · 1068 阅读 · 1 评论 -
VC++实现的类似Delphi的TStringList对象列表类
// 头文件:MyStringList.h////////////////////////////////////////////////////////////////1、简 介:对象列表类 - 索引串+对象指针//2、主要功能:// // 可以根据索引串活对象指针值获取索引// 灵活添加删除// //转载 2009-03-04 15:59:00 · 2155 阅读 · 0 评论 -
了解#pragma comment
#pragma comment( comment-type [,"commentstring"] )该宏放置一个注释到对象文件或者可执行文件。comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1、compiler转载 2009-03-04 15:04:00 · 811 阅读 · 0 评论 -
详细解说 STL 排序(Sort)
作者Winter详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1.3 sort 的稳定性1.4 全排序1.5 局部排序1.6 nth_element 指定元素排序1.7 partition 和stable_partition转载 2009-03-03 15:07:00 · 653 阅读 · 0 评论 -
详细解说STL hash_map系列
详细解说STL hash_map系列0 为什么需要hash_map1 数据结构:hash_map原理2 hash_map 使用2.1 一个简单实例2.2 hash_map 的hash函数2.3 hash_map 的比较函数2.4 hash_map 函数3 相关hash容器4 其他4.1 hash_map和map的区别在哪里?转载 2009-03-03 14:35:00 · 666 阅读 · 0 评论 -
VC使用及调试相关小技巧
自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,呵呵,总是需要上网查资料来解决,在这里把自己用到上网查的一些技巧摘录如下,希望对大家有用,省去大家再去搜索的烦恼。1.如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disab转载 2009-03-04 14:07:00 · 632 阅读 · 0 评论 -
MS-VC 使用MAP文件快速定位程序崩溃代码行[转]
程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。 在VC中,我们可以利用出现程序崩溃时VC的自动跳转,定位到出错代码行。但在大量的压力转载 2009-03-04 14:54:00 · 1034 阅读 · 0 评论 -
最快速度找到内存泄漏
内存管理是C++程序员的痛。我的《内存管理变革》系列就是试图讨论更为有效的内存管理方式,以杜绝(或减少)内存泄漏,减轻C++程序员的负担。由于工作忙的缘故,这个系列目前未完,暂停。这篇短文我想换个方式,讨论一下如何以最快的速度找到内存泄漏。确认是否存在内存泄漏我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public C转载 2009-04-01 00:28:00 · 725 阅读 · 0 评论 -
C语言时间函数应用
C语言时间函数应用 摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。 关键字: UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 1转载 2009-04-13 14:08:00 · 1062 阅读 · 0 评论 -
被误解的C++——模板和宏
模板和宏前些日子,论坛里大打口水仗的时候,有人提出这样一个论断:模板本质上是宏。于是,诸位高手为此好好辩论了一番。我原本也想加入论战,但是觉得众人的言论已经覆盖了我的想法,所以也就作罢了。尽管没有参与讨论,但“模板究竟和宏有什么关系”这个问题,始终在我的脑海中上下翻飞。每当我能够放松下来的时候,这个问题便悄悄地浮现。(通常都是哄儿子睡下,然后舒舒服服地冲个热水澡的时候:))。我思索了半天,决定转载 2009-04-02 11:30:00 · 2060 阅读 · 0 评论 -
LCC解读笔记
基础函数:缓冲定义:static unsigned char buffer[MAXLINE+1 + BUFSIZE+1]; MAXLINE是作为缓冲,当未处理完所有缓冲时,复制未读完的数据,在fillbuf可以看到应用。 获取下一行 void nextline(void) {do {if (cp >= limit) {fillbuf();if (c转载 2009-03-26 11:52:00 · 1413 阅读 · 1 评论