如何转换全角字符到半角字符
我们知道,在windows中,中文和全角字符都占两个字节,并且使用了ascii chart 2 (codes 128–255)。我们可以凭这一点来一个个检测用户输入的是否是中文和全角字符。实际上,全角字符的第一个字节总是被置为163,而第二个字节则是相同半角字符码加上128(不包括空格)。如半角a为65,则全角a则是163(第一个字节)、193(第 ...
c++ using namespace详解
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一 :
和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为。h的头文件c++标准已经明确提出不支持了,早些的实现 ...
C、C++和Java安全编码实践提示与技巧
对于所有类型环境中的开发人员来说,安全性正成为一个越来越重要的主题,即便过去一直认为安全性不成问题的嵌入式系统也是如此。本文将介绍几种类型的编码漏洞,指出漏洞是什么、如何降低代码被攻击的风险、如何更好地找出代码中的此类缺陷。
注入攻击
通过将信息注入正在运行的流程,攻击者可以危害进程的运行状态,以反射 ...
提笔就老:回文判断(C++)
最近复习C++,在看《Accelerated C++》时,对回文的例子印象很深刻,代码简洁明了,令人惊叹:
bool is_parlindrome(const string& s)
{
return equal(s.begin(), s.end(), s.rbegin());
}
也可以这么写:
return equal(s.begin(), s.begin() + s.length() / 2, s.rbegin());
撇开STL的用法,用原始的手工写法,一般人都 ...
高质量C++/C编程指南
高质量C++/C编程指南-前言
高质量C++/C编程指南-第1章-文件结构
高质量C++/C编程指南-第2章-程序的版式
高质量C++/C编程指南-第3章-命名规则(1)
高质量C++/C编程指南-第3章-命名规则(2)
高质量C++/C编程指南-第4章-表达式和基本语句
高质量C++/C编程指南-第5章-常量
高质量C++/C编程指南-第6章-函数设计(1)
高质量C++/C编 ...
在非MFC程序中引用CString
CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。
为了使用CString类, ...
C++中重载+操作符的正确方法
摘要:本文概要性地介绍如何选择正确的策略来为用户定义类型重载 + 操作符。
用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制。但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战。本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个 ...
google竞赛题SecretSum的C++解法
SecretSum 是本次 google 竞赛中第二轮淘汰赛的一道分值为 500 分竞赛题。事实上,这道题目反而比同轮比赛中的那道 1000 分值的RecurringNumbers 难(RecurringNumbers 的难度水准充其量不过是道初一学生奥数竞赛题)。好了,闲话少叙,来看 SecretSum 的题目吧:
一、竞赛题目
Problem Statement
We can substitute each digi ...
《UTF-8与GB2312之间的互换》的改进
最近,在做一个小程序的时候,突然遇到了汉字编码转换问题。关于如何在UTF-8与GB2312之间转换的问题。在VC知识库里看到吴康彬的文章《UTF-8与GB2312之间的互换》,文章浅显易懂,代码也不长。省了我不少的找资料的时间。在此谢谢了。 :)
在看代码的过程中,吴康彬用了许多字符串的转换,来进行2进制的运算,这就涉及到大 ...
C++/VC++编程疑难问题及解答(二)
标准程序库问题,再谈list的迭代器是否可以随机移动?
上篇文章中的"list的迭代器是否可以随机移动?"问题的回顾:
由于list的内部实现是双向链表,链表就要求迭代器(指针)只能依次从前向后(或从后向前)移动,依次移动一个位置,因此list只定义了++和--操作符,而没有定义+、-、+=和-=等操作符。所以要想list的迭代器移 ...
在C++程序中添加逻辑流程控制
问题的引出
在计算机程序中,除了常见的执行流程控制,还有逻辑流程控制;有时,执行流程即为逻辑流程,但在大多数情况下还是有所区别的,例如,假定有一个Web服务器使用同步套接字读取HTTP请求,那么会编写如下的代码:
void read(HTTP_REQUEST& http_request)
{
read(http_request.header);
read(http_request.body, http ...
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。
在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需 ...
C++中通过重载避免隐式类型转换
以下是一段代码,如果没有什么不寻常的原因,实在看不出什么东西:
class UPInt { // unlimited precision
public: // integers 类
UPInt();
UPInt(int value);
...
};
//有关为什么返回值是const的解释,参见Effective C++ 条款21
const UPInt operator+(const UPInt& lhs, const UPInt& rhs);
UPInt upi1, upi2;
...
C++ Builder编写文本编辑器
CB是BORLAND公司继DELPHI之后开发的又一个通用的客户/服务器结构的开发工具。C++Builder的集成开发坏境除了深入更多的Windows95控制元件,可以建立的对象分类更为详细,添加了许多DELPHI所没有的部件之外,C++Builder的界面基本上与DHLPHI完全相同。C++Builder使用C++语言而不是object pascal语言,所以可以产生更快速和更 ...
用C++异常取代exit()函数
从C语言开始接触C++的人,恐怕都知道exit()这个函数,似乎现在很多的程序员都有这样一种习惯,在程序一遇到错误、或任务刚完成时,把调用exit()函数当成是一种最好的结束程序的方法。在以前遗留的许多老式C/C++代码中,这种现象非常普遍,但当手头的软件项目逐步进展并越来越大时,就不得不面临合并以前分散的各个模块这项 ...
输入法编程指南
Windows 95输入法编辑器(IME)
原著:Microsoft
翻译:TBsoft Software Studio
一、关于Windows 95混合语言IME
在Windows 95中,IME是一个动态链接库(DLL),与Windows 3.1远东版本IME不同的是,每一个运行的IME相当于混合语言键盘布局中的一种。与Windows 3.1 IME相比较,Windows 95混合语言IME提供下列增强功能:
●运 ...
掌握C++ builder的除错艺术(1)
第一篇-正确书写代码
1.简介
2.书写干净的代码
3.使用异常及异常处理能力
4.使用记录(logging)机制
5.结合使用记录机制与类的异常处理机制
6.处理您代码外产生的异常
7.你的回合
8.版权说明
简介
这篇文章,我将从最基本的开始谈起。但希望可以涉及更广的层面,而不仅仅是为你的程序除错(debug)。你将会看到,我认为除错 ...
掌握C++ builder的除错艺术(2).2
第二篇-近距离观察(2)
使用evaluate/modify(求值/修改)
最后一种显示变量或代码块的值的途径是evaluate/modify(求值/修改)窗口。这个窗口可以象打开巡视器一样打开,在您要evaluate/modify(求值/修改)的代码行上右击选择"debug|evaluate/modify"就会弹出evaluate/modify(求值/修改)窗口。本窗口用来对表达式/变 ...
用CryptoAPI进行数据加密
因为过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常简单的加密技术,这样做的结果就是加密的数据很容易就可以被人破译。而使用Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,就可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。本文将对CryptoAPI及 ...
理解C++面向对象程序设计中的抽象理论
很多书在一开始就开始学习josephus问题,为了让大家前面学起来较为容易我把前面涉及到此问题的地方都故意去掉了,现在我们已经学习过了结构体和类,所以放在这里学习可能更合适一些。
在正式开始学习之前我们先回顾一下如何利用数组和结构体的方式来解决,最后我们再看一下如何利用面向对象的抽象理念进行解决此问题的程序 ...