Memail首页 订阅杂志 广告合作 联系我们
 

VisualC++2008新特性:MFC的增强


2008年05月20日 23:17  IT168技术专稿


  虽然在托管语言的发展方面C++似乎较之其他语言发展步调缓慢,但是C++语言的新功能依然不逊于任何其他托管语言。与Visual Basic这种日新月异的语言不同,C++语言一直保持其不变的风格是它的一个优良传统,当然C++的也并非永远一成不变,其每一步变化无不是经过反复推敲的经典之作。目前正在制定中的下一代 C++ 标准 C++ 0x 将通过对语言本身的扩展来满足最近十年来开发人员对它提出的各式各样的需求。技术报告1(TR1)是这一标准建立过程中的过度产品,更多的语法特性将作为最终版本的一部分进行发布。   

标准模板库 数组   

  现有的C++标准模板库中有个备受争议的设计,就是其没有引入定长数组,当然有很多办法解决这一问题,比如使用C语言风格的数组,或者使用vector甚至使用第三方类库,但是这些方法显然没有解决这一问题。所以为C++新标准添加定长数组简直是天经地义的,使用新数组集合的方法也非常简单,数组长度被作为模板的一个参数,而数组的操作方式和STL中的vector对象完全一致。

#include <array> 
#include <iostream>
#include <string>

std::tr1::array<int, 3> intArray = {4, 8, 10};

std::tr1::array<int, 3> intArray2 = {4, 8};
intArray2[2] = 10;

std::cout << ((intArray == intArray2)?
std::string("Arrays are equal"):
std::string("Arrays aren't equal")
);

std::cout << std::endl;

for (std::tr1::array<int, 3>::const_iterator it =
intArray2.begin();
it != intArray2.end();
++it) {
std::cout << " " << *it;
}

   

   对于上面的代码有些内容需要引起注意:   1. 在数组声明的过程中既可以定义全部内容也可以只定义一部分内容,编译器会判断数据类型和数组长度,并自动完成数组定义   2. “==”操作符被重载过了,重载之后的操作符可以用于比较两个数组中的元素是否相同。   3. 迭代器的工作方式和之前的标准模板库中集合对象的使用保持一致   Visual C++ 2008通过使用std::tr1名字空间引入了上面这些TR1的扩展功能。

  

正则表达式      

  虽然很多第三方工具已经在C++中实现了正则表达式功能,但是这些工具对于标准C++的整合远远没有达到大家所期望的程度。把正则表达式引入C++之后,正则表达式的运算结果就可以直接被STL中的其他运算所引用,并且使用正则表达式的代码也可以被各种编译器编译。   在TR1中引入的正则表达式类库basic_regex有点类似于标准C++中很重要的类库basic_string,对于一个basic_regex类,你需要指定的是使用char或者wchar字符作为参数。

  basic_regex类的字符内容是正则表达式字符和符号,basic_regex类支持许多种正则表达式标准,如basic, extended, ECMAScript, awk, grep, 和 egrep。在设置好正则表达式字符串之后,basic_regex类的对象通过一系列函数接收一个用于拆分的字符串并进行正则匹配。   用于正则匹配的函数有3个,regex_match, regex_search 和 regex_replace.其中regex_match函数用于判断接受的字符串是完全否匹配正则表达式,regex_search用于返回参数中符合正则表达式的字符串内容,返回对象是一个match_results。而regex_replace用于替换提交字符串中正则表达式匹配的内容。   示例代码显示了如何使用正则表达式匹配一个电子邮件地址,并把匹配结果显示出来 .   

#include <regex> 
#include <iostream>
#include <string>

basic_regex<char> regex("[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]",
basic_regex<char>::icase);

cout<< std::boolalpha << regex_match("GoOD@DOMAIN.COM", regex)
<< std::endl;

cout<< std::boolalpha << regex_match("@DOMAIN.COM", regex)
<< std::endl;

推荐】【打印】【  】【关闭窗口

投资快讯: 休闲空间:
 财富杂志:谷歌受困人才流失将何去  (05-14)
 法国高尔夫邀请赛挥杆于雪山冰川脚  (05-14)
 热气球飞行复古的贵族运动  (05-14)
 艺术收藏品剖析雪茄的结构  (05-14)
 动感大片奥运宝贝小腿前肠肌的诱惑  (05-14)
影视速弟: 音乐天堂:
 灾难片《滑坡》将上映片名有双关含  (05-14)
 《家有喜事2009》宣传吴君如当众被  (05-14)
 吴宇森梁朝伟赴戛纳《赤壁》目标抢  (05-14)
 《精武陈真》今晚开播陈小春首演爱  (05-14)
 男星迈克尔-拉帕波特加入《越狱》第  (05-14)
 那英等百位歌手心系灾区公益歌曲《  (05-14)
 旅行团《来福胶泥》:带有泥土清新  (05-14)
 宇儿褪去冠军光环《一步一步》展90  (05-14)
 地震灾害赈灾歌曲《爱的家园》歌词  (05-14)
 谢娜秘籍《化骨绵掌》第一招华筝公  (05-14)
软件快报: 硬件资讯:
 地震报道Twitter初露锋芒  (05-20)
 SQLServer2008会否再度延迟发布?  (05-20)
 微软卷土重来只收购雅虎搜索业务  (05-20)
 VisualC++2008新特性:MFC的增强  (05-20)
 SR308:Java语言复杂度在恣意增长?  (05-20)
 神舟DIY笔记本为何敢叫“奔驰”  (05-14)
 国外7英寸本配中国公司处理器并非龙  (05-14)
 代号GriffinAMD最新移动CPU规划曝光  (05-14)
 定位不清?索尼高层重申PS3主业是游  (05-14)
 新款高速SSD曝光读速度达到130MB/s  (05-14)
想成为高手,靠自己摸索可远远不够。这里有众多的高手,愿把他们的经验与你交流。
发行周期:周一
发行记录:查看全部记录
 订阅更多的杂志
推荐:图片搜索

搜索16亿张互联网图片






·KooMail(酷邮)v5.0简体中文正式版发布
·恶意软件清理助手v2.84Build015发布
·UbuntuLinux正式公布后续版本发布时间表
·VeryCD电驴(easyMule)v1.0.2080514
·Google日历:公共日程手机短信提醒
·微软发布AdobeFlashPlayer更新
·新标杆还是噱头3DMarkVantage全面介绍
·让IE浏览器中所有网页字体全都变雅黑
·如何将MySQL数据库迁移到Oracle数据库
·只防病毒不安全完美网络安全还需要防什么
CopyRight© 2003 Memail.net, All Rights Reserved. 网站地图 隐私声明