摘要: 首先,先看看如何对数字进行循环移位C语言中没有提供循环移位的操作符,但可以通过简洁的方式实现循环移位,主要使用移位操作来实现。设一个操作数x有s位则循环左移n位的操作为: (x << n) | (x >> (s - n)); 同理右移n位位:(x >> n) | (x << (s - n));实际编程中可以用宏定义实现循环移位: #define ROTATE_LEFT(x, s, n) ((x) << (n)) | ((x) >> ((s) - (n))) #define ROTATE_RIGHT(x, s, n) ((x 阅读全文
posted @ 2012-05-20 16:26 Mr.Rico 阅读(2606) 评论(0) 推荐(0)
摘要: 如果用户熟悉Linux下的sed、awk、grep或vi,那么对正则表达式这一概念肯定不会陌生。由于它可以极大地简化处理字符串时的复杂度,因此现在已经在许多Linux实用工具中得到了应用。千万不要以为正则表达式只是Perl、Python、Bash等脚本语言的专利,作为C语言程序 员,用户同样可以在自己的程序中运用正则表达式。 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数PhilipHazel的Perl-CompatibleRegularExpression库,许多Linux发行版本都带有这个函数库。 编译正则表达式 ... 阅读全文
posted @ 2012-05-20 11:16 Mr.Rico 阅读(280) 评论(0) 推荐(0)
摘要: 算起来,我用Visual C++也有将近5年的历史了。在这期间,我也曾涉猎过Visual Basic和Delphi,但都是浅尝而止;Visual C++始终是我的主业。可是努力的成果如何呢?我用Delphi作出了十多个有规模的软件,用VB--虽然我用在VB上的时间只有短短的两三个月--也有 两个像样的项目;然而,在我付出了最大热情和最多努力的Visual C++上面,却只作出了三个自己看得上眼的软件。固然,在用 Visual C++的时候,MFC帮了我不少的忙。但是,在写下这个题目之时,我就已经打定主意:在这篇文章中,只对MFC提出批评,不说MFC的好话。Visual C++的拥护者... 阅读全文
posted @ 2012-05-20 10:54 Mr.Rico 阅读(304) 评论(0) 推荐(0)
摘要: 最近在项目开发中,遇到一个异常,经过测试,发现是迭代器失效问题,于是稍微总结了一下。 vector迭代器失效测试: 测试程序: voidvectorTest(){vector<int>container;for(inti=0;i<10;i++){container.push_back(i);}vector<int>::iteratoriter;for(iter=container.begin();iter!=container.end();iter++){if(*iter>3)container.erase(iter);}for(iter=container 阅读全文
posted @ 2012-05-20 09:18 Mr.Rico 阅读(7371) 评论(0) 推荐(1)