博文

最简单的STL教程(2005-12-17 15:29:00)

摘要:学习教程列表: 详细解说STL string C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触 perl, php, 和Shell脚本以后,开始理解了以前为什么有人说C++文本处理不方便了。 本文讲述了string在STL中的作用,详细介绍了STL string的用法,并讲解如何定义char_traits结构,最后提出了关于使用STL string的建议以及string类的所有函数列表。 详细查看: 详细解说STL string
使用STL流(stream)来简化C++“线程安全”日志记录 本文由周靖翻译
流是一种强大的数据处理抽象机制,它允许你调用泛型的读/写函数,不必关心数据从什么地方来、到什么地方去。使用流,同样的代码可从控制台、文件、套接字等地方读取数据。STL通常不是线程安全的,本文提出了如何在线程安全的方式下使用流的方案。
学习STL map, STL set之数据结构基础 摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。
彻底学习STL中的Allocator Allocator是C++语言标准库中最神秘的部分之一。它们很少被显式使用,标准也没有明确出它们应该在什么时候被使用。今天的allocator与最初的STL建议非常不同,在此过程中还存在着另外两个设计--这两个都依赖于语言的一些特性,而直到最近才在很少的几个编译器上可用。对allocator的功能,标准似乎在一些方面追加了承诺,而在另外一些方面撤销了承诺。
标准模板库(STL)介绍(下)作者:Scott Field 。 本文以STL容器list为例,介绍了find()函数、sort()函数,search......

阅读全文(13008) | 评论:0

STL 简介,标准模板库(2005-12-17 15:28:00)

摘要:这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL。
    当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话题的深度和广度。有很多内容要含盖,也有很多详细描述STL的书。因此我重新考虑了一下我原来的想法。我为什么要写这篇文章,又为什么要投稿呢?这会有什麽用呢?有再来一篇关于STL的文章的必要吗?     当我翻开Musser and Saini的页时,我看到了编程时代在我面前消融。我能看到深夜消失了, 目标软件工程出现了。我看到了可维护的代码。一年过去了,我使用STL写的软件仍然很容易维护。 让人吃惊的是其他人可以没有我而维护的很好!     然而,我也记得在一开始的时候很难弄懂那些技术术语。一次,我买了Musser&Saini,每件事都依次出现,但是在那以前我最渴望得到的东西是一些好的例子。     当我开始的时候,作为C++一部分的Stroustrup还没出来,它覆盖了STL。     因此我想写一篇关于一个STL程序员的真实生活的文章可能会有用。如果我手上有一些好的例子的话,特别是象这样的新题目,我会学的更快。     另外一件事是STL应该很好用。因此,理论上说,我们应该可以马上开始使用STL。     什麽是STL呢?STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。     STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。它被内建在你的编译器之内。因为STL的list是一个简单的容器,所以我打算从它开始介绍STL如何使用。如果你懂得......

阅读全文(3936) | 评论:0

MFC入门[转](2005-12-17 15:23:00)

摘要:该文章为学习了C和C++以及有SDK编程基础的,但还未学习MFC的人员使用,我们开始使用一个基本的内容开始:

全部的代码如下:

#include <afxwin.h>

class sample:public CFrameWnd
{
public:
sample()
{
Create(NULL,"MFC Window");
MessageBox("My MFC Window","CFrame constructor",MB_OK);
}
};

class App:public CWinApp
{
public:
BOOL InitInstance();
BOOL ExitInstance();
};

BOOL App::InitInstance()
{
MessageBox(0,"My MFC Window","InitInstance",MB_OK|MB_ICONASTERISK);
sample *obj;
obj=new sample;
m_pMainWnd=obj;
obj->ShowWindow(SW_SHOWMAXIMIZED);
return TRUE;
}

BOOL App::ExitInstance()
{
MessageBox(0,"My Window","ExitInstance",MB_OK|MB_ICONHAND);
return TRUE;
}

App a;

你只需将以上代码拷贝下来,在VC++6.0编译器,建一个Window32工程,使用MFC链接库编译即可

具体步骤:打开VC++6.0,点击主菜单File(文件)-〉New(新建) 弹出一个对话框,我们选择

win32 Application(win32应用程序),再工程文本框给她起一个名字MyMFC,点击确定。在确认

信息的对话框里点确定。这样我们就建了一个win32 应用程序这样一个类型的工程。下面我们在

这个工程里建一个C++文件。点击菜单File(......

阅读全文(8391) | 评论:1

STL实践指南(2005-12-17 15:16:00)

摘要:原作者姓名 Jeff Bogan 介绍
这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章。这篇文章从STL的基础知识讲起,循序渐进,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间(namespace)、STL中的ANSI / ISO字符串、各种不同类型的容器(container)、模板(template)、游标(Iterator)、算法(Algorithms)、分配器(Allocator)、容器的嵌套等方面的问题,作者在这篇文章中对读者提出了一些建议,并指出了使用STL时应该注意的问题。这篇文章覆盖面广,视角全面。不仅仅适合初学者学习STL,更是广大读者使用STL编程的实践指南。
这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章。这篇文章从STL的基础知识讲起,循序渐进,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间(namespace)、STL中的ANSI / ISO字符串、各种不同类型的容器(container)、模板(template)、游标(Iterator)、算法(Algorithms)、分配器(Allocator)、容器的嵌套等方面的问题,作者在这篇文章中对读者提出了一些建议,并指出了使用STL时应该注意的问题。这篇文章覆盖面广,视角全面。不仅仅适合初学者学习STL,更是广大读者使用STL编程的实践指南。

STL简介

STL (标准模版库,Standard Template Library)是当今每个从事C++编程的人需要掌握的一项不错的技术。我觉得每一个初学STL的人应该花费一段时间来熟悉它,比如,学习STL时会有急剧升降的学习曲线,并且有一些命名是不太容易凭直觉就能够记住的(也许是好记的名字已经被用光了),然而如果一旦你掌握了STL,你就不会觉得头痛了。和MFC相比,STL更加复杂和强大。
STL有以下的一些优点:

可以方便容易地实现搜索数据或对数据排序等一系列的算法;

调试程序时更加安全和方便;

即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨平台的)。

背景知识

阅读全文(4500) | 评论:0

MFC 教程(2005-12-17 15:12:00)

摘要:MFC 教程
作者:李久进
作者序
-----------
我曾写一本关于MFC的书,分析了MFC的结构和设计(《MFC深入浅出》),华中理工大学出版。书的内容建立在对MSDN和MFC SOURCE CODE的大量分析上,该书对于希望学习MFC的人来说,是较有价值的。可惜出版社好象只在几个城市针对学生作销售,虽然学生反应不错,但是外界知道不多。 http://vczx.com/tutorial/mfc/mfc.php......

阅读全文(4879) | 评论:1

经典电脑学习资料大全(2005-12-17 15:11:00)

摘要:经典电脑故障全攻略
http://www.starinfo.net.cn/photo ... i/computerabort.zip

Fdisk硬盘分区图解步步通
http://www.starinfo.net.cn/photo ... huji/fdiskstudy.rar

计算机等级考试题库系统
http://www.starinfo.net.cn/photo ... /2002111519522b.zip

轻轻松松的安装 Linux 系统
http://www.starinfo.net.cn/photography/gif/f6/shuji/linux.zip ;

历年程序员试题
http://www.starinfo.net.cn/photo ... /历年程序员试题.zip

虚拟专用网的创建与实现
http://www.starinfo.net.cn/photo ... 猛拇唇ㄓ胧迪?zip

职称计算机考试上级环境
http://www.starinfo.net.cn/photo ... 慊际陨霞痘肪?zip

跟我学刻录
http://www.starinfo.net.cn/photo ... huji/跟我学刻录.zip

Delphi 5.X分布式多层应用系统篇
http://www.starinfo.net.cn/photography/gif/f6/shuji/d5_midas.zip ;

Win2000网络服务功能
http://www.starinfo.net.cn/photo ... 000网络服务功能.zip

Win2000维护和管理
http://www.starinfo.net.cn/photo ... n2000维护和管理.zip

AutoCAD 2000 三维造型高级培训教程
http://www.starinfo.net.cn/photo ... 2000_3d_advance.zip

php3简单教程
http://www.starinfo.net.cn/ph......

阅读全文(4647) | 评论:4

程序员四大忌(2005-12-17 15:05:00)

摘要:一忌--轻易言败,没有自信
    没有永不放弃精神的程序员,只是一个有程序员名号的假程序员。一个真正的程序员,知道在
程序设计的过程中,可能会遇到不计其数的困难和问题,可能有极多的挫折和失败,而成功只有一次。
就为解决一个问题,我们可能连续十几甚至几十小时的坐在计算机前不停的工作。一个问题解决了,
可能又有其它的问题出现。而你要是不能坚持下来,可能从前的一切努力都流失了。轻易言败的人请
不要做程序员,你不可能成功。执着是最可贵的。
    执着的程序员都是相信自己的人,每时每刻都会鼓励自己,你做的出来,你能解决,你会成功。
这样他才能坚持下去。

二忌--浮华不实,自满自大
    夸夸奇谈的人不是优秀的程序员。整个程序设计的过程就是一个研究学习,应用,再研究学习,
再应用的过程。一名优秀的程序员决不会认为自己足够好了,不需要再提高了。自满自足的人不会是好程序员,
会很快落后以致落伍。所以越是优秀的程序员越是感觉自己懂得少,不会在人前故意卖弄,这并不是故作谦虚,
而是实实在在的感受,亲自体会才能明白。
    浮华的程序员会不懂装懂,不停的强调语言的优劣,平台的好坏。追求所谓最新最时尚的技术,停留在
表面问题上。或假做深沉,用不适合的方式做不适合的事情。就像孔已己一样,以为知道"茴"字有四种写法就是
学问。最后是简单的作不好,困难的也作不好。

三忌--死气沉沉,不求甚解
    优秀的程序员是充满激情和活力的程序员。求知欲和创造欲是原动力。有求知欲你才能不停的学习,
有创造欲你才能不停的超越自己。死气沉沉的程序员已经对程序设计失去了兴趣,很快就会主动或被迫离开。
创造不是指你要发明什么别人不知道的技术或方法,而是说不能仅仅知道怎么做,还要知道为什么这样做。
之后你才能创造,其实程序设计的整个过程就是创造的过程。

四忌--强调客观,忽略自身
    很多程序员都是在失败的时候强调......

阅读全文(3224) | 评论:0

由零开始做 Dialog (SDK版) — 在 VC + MSDN 下取巧篇(2005-12-17 15:03:00)

摘要: (一般来说要做一个 Dialog 是非常简单的,所以这篇教程是写给初学者的。但是由于篇幅所限,对窗体过程或事件驱动不做介绍。)
    好了,言归正传。我们就马上来做吧。
    打开你的 VC6 (如果有工程的请Close Workspace),选择新建工程(Win32 Application - An empty project ,记得选好保存路径),然后在该路径里新建一个 .cpp文件(比如WinMain.cpp),最后在工程管理窗口的 "FileView" 那里,选择 Add Files to project , 把刚新建的 WinMain.cpp 加入到工程里面去。
    好了,你现在已经有了一个工程文件了,如果你希望加入你自己定义的对话框,还要做一个资源文件,并包含到你的工程中来,就好像 WinMain.cpp 的那样。
在 VC6 的菜单 "Insert" – "Resource... Ctrl+R" 中,理所当然要加入一个 Dialog ,选择 "New" (不是Import)。 然后你就可以得到一个默认模板的对话框了,随便给这个新建的 Dialog 设置一些属性(双击该对话框的标题栏可以得到设置属性的对话框),比方说,那个对话框的 ID: 默认的是 IDD_DIALOG1 ,你就把它改为 "MYDIALOG" (请记住要给ID 加上双引号,默认的是没有引号的,这样做是为了可以不包含 Resource.h 的头文件);跟着你喜欢的话就改改标题吧,在 Caption: 里填入 my first Dialog 。 好了,剩下的就是保存工作了。请选择 Save All,选在你的工程的目录里保存该资源文件(我这里的名字选择 Resource.rc)。
好了,现在资源文件已经有了,剩下的就是把它加入到工程中来了,方法可以参考 WinMain.cpp 的加入,不再累叙 (在 FileView 里面加入)。     好了,以下剩下的就是编辑你的 WinMaiin.cpp 了,也是我所说的可以取巧的地方。     首先,你首先必须加入的是 这一句:  #inc......

阅读全文(5166) | 评论:0

MFC 四大天王(2005-12-17 15:02:00)

摘要: 关於 MFC 这一主题,在「沧海书讯」版上曾经被讨论过的书籍有四本,正是我所列出的这四大天王。看来我心目中的好书颇能吻合市场的反应。 ---------------------------------------------------------------
我还记得,无责任书评是在四年前(1993)开春时和大家第一次见面。虽然不是每个月都出货,但断断续续总保持着讯息。在明确宣布的情况下这个专栏曾经停过两次,第一次停了叁个月,於 1994 年开春复工;第二次停了十五个月,於 1997 年开春的今天,重新与各位说哈罗。 休息整整一个年头又叁个月,写作上的疲倦固然是因素之一,另外也是因为这个专栏直接间接引起的让人意兴阑珊的俗人俗务。读者写信来说,『总把无责任书评当成休闲散文看。或许您可以考虑写些休闲小品,定会畅销』,是呀,我正构思把因这个专栏而获得的人生经验写成一本「现形记」。可是不知道手上「正当」工作什麽时间才能告一段落,写起我的小说。也不知道什麽样的出版社有兴趣侯捷写的小说。 倦勤与无奈过去了,满腔读书心得沛然欲发。所以,我又拿起笔「无责任」了。感觉有点陌生,但是回顾读者们这一年写来的上百封信,让我意气昂扬。这个月我谈的是 Visual C++ 与 MFC。此题目我已提过两次。一来它十分重要,演化的过程也十分快速而明显,二来这个领域又有一些重量级书籍出现,所以我必须再谈一次。 另外,我还是得再强调,侯捷的专长领域有限,离我火力太远的书我只能远观不敢近玩。这个专栏用在抛砖引玉,让谈书成为一种风气。Windows Developer's Journal(WDJ)的 Books in Brief 专栏原先也是主持人 Ron Burk 唱独角戏,後来(现在)就有了许多读者的互动。我也希望这样的事情在这里发生。 ●必也正名乎 常在 BBS 的程式设计相关版面上看到,许多人把 Visual C++ 和 C++混淆不清,另则是把 Visual C++ 和 MFC 混为一谈,实在有必要做个 清。C++ 是语言,Visual C++ 是产品。『我们学校开了一门 Visual C++ 的课程』这种说法就有点奇怪,实际意义是『我们学校开了一门 C++ 课程,以 Visual C++ 为软体开发环境』。『我会写 Visual C++ 程式』这种说法也很怪,因为Vis......

阅读全文(4127) | 评论:0

Visual C++ MFC 中常用宏的含义(2005-12-06 09:47:00)

摘要:AND_CATCHAND_CATCH
AND_CATCH(exception_class,exception _object_point_name)
说明:

定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_CATCH块中调用THROW_LAST宏以便把处理过程移到下个外部异常框架。AND_CATCH可标记CATCH或AND_CATCH块的末尾。

注释:
AND_CATCH块被定义成为一个C++作用域(由花括号来描述)。若用户在此作用域定义变量,那么记住他们只在此作用域中可以访问。他也用于exception_object_pointer_name变量。

ASSERT
ASSERT(booleanExpression)
说明:
计算变量的值。如果结构的值为0,那么此宏便打印一个诊断消息并且成讯运行失败。如果条件为非0,那么什么也不做。 诊断消息的形式为: assertion failed in file in line 其中name是元文件名,num是源文件中运行失败的中断号。 在Release版中,ASSERT不计算表达式的值也就不中断程序。如果必须计算此表达式的值且不管环境如何那么用VERIFY代替ASSERT。
注释:
ASSERT只能在Debug版中用

ASSERT_VAILD
ASSERT_VAILD(pObject)
说明:
用于检测关于对象的内部状态的有效性。ASSERT_VALID调用此对象的AssertValid成员函数(把它们作为自己的变量来传递)。在Release版中ASSERT_VALID什么也不做。在DEBUG版中,他检查指针,以不同于NULL的方式进行检查,并调用对象自己的AssertValid成员函数。如果这些检测中有任何一个失败的话,那么他会以与ASSERT相同的方法显示一个警告的消息。
注释:
此函数只在DEBUG版中有效。

BEGIN_MESSAGE_MAP
BEGIN_MES......

阅读全文(4420) | 评论:0