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