C++学习笔记(三)----关于at()和下标符[]

for循环语句

可以在for语句头中定义多个对象,但由于只能出现一个语句,因此所有的对象必须具有相同的一般类型:

for(int ival=0,*pi=ia,&ri=val;

     ival!=size;

     ++ival,++pi,++ri)

     //……

---------------------------------------

std

所谓命名空间namespace,是指标识符的各种可见范围。

C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

-----------------------------------------

try…catch…

try块是用来处理异常,使用try给错误检测和错误处理工作带来了很大的方便,同时也使程序的逻辑更清晰,更易读.我们可以在try块中通过throw表达式引发异常条件,当然也可能try块中的语句在执行过程中抛出标准异常.而其后面的一个或多个catch子句则可以处理这些异常.

标准库定义了一组异常类,用来在throw和相应的catch之间传递错误信息.我们常用的有runtime_error等等.

寻找处理代码的过程与函数调用链刚好相反.先找相同层级的catch子句,没有找到匹配的话,再依次往外层找,直到找到匹配的catch.如果直到最后都没有找到,程序就会跳转到名为terminate的标准库函数,这通常会使程序非正常退出.

-------------------------------------------

预处理器?

有时我们会在程序中加入调试代码,这些代码只有在程序调试时才需要执行.当程序已经完成时,就需要关闭调试代码,我们可以使用NDEBUG预处理变量来实现.比如:

#ifndef NDEBUG
       cerr << "The  string is:"<<this_s<<endl;
#endif

当NDEBUG未定义时,会执行上面的代码,而一旦程序完成,我们会定义NDEBUG,这样就不会编译以及执行上述代码.

书中提到的命令行选项:

$ CC –DNDEBUG main.C

在哪里使用呢?怎样使用呢?

----------------------------------------------

访问字符串中的字符

可以使用[]或者at()方法来访问字符串中的字符,起始索引是0.最大有效索引是string.length()-1.(特别的,如果是const string类型的对象,那么最大有效索引是string.length(),最后一个字符是'\0’.)

[]和at()的区别在于[]不检查索引是否有效,而at()在遇到无效索引时会抛出out_of_range异常.

----------------------------------------------

ascii码

常用ascii码

a  97
z  122
A  65
Z  90
0  48
9  57

posted on 2011-03-30 22:04  Barryhe  阅读(3501)  评论(0编辑  收藏  举报

导航