C++ string
string对象会自动忽略开头的空白,并且在读到第一次空白后终止。

如果我们想读取一整行且不受空格的影响那么我们可以使用getline函数
getline的参数是一个输入流和一个string对象,函数从给定的输入流中读取内容,直到遇到换行符为止(注意换行符也被读取了)然后把所读的内容存入到string对象中(不存换行符),如果读取的一开始就是换行符那就会返回一个空的string。

getline和cin一样会返回他的参数流,所以他可以作为if/while的条件。
string的size操作
size函数返回的是一个string::size_type类型的值,string类和其他大多数标准库类型都定义了几种配套的类型,这些配套类型体现了标准库类型与机器无关的特性,size_type就是其中的一种,在使用时通过作用域操作符来表明size_type实在类string中定义的。
尽管我们不太清楚string::size_type的细节,但是他是一个无符号类型的值,所以在使用时如果和负值的int比较大小无疑会小于这个负值(因为负值会自动转换为一个比较大的无符号值)
string对象的相加
s1+=s2(等价于s1=s1+s2)其实就是把s2的内容串接到s1后。
注意:string对象在和字面值对象相加时,必须确保每个+号的两侧的运算对象至少有一个时string对象。

处于某些历史原因也是为了和C语言兼容,c++语言中的字符串字面值并不是标准库类型的string对象。切记,字符串字面值与string时不同的类型。
cctype头文件

C++的C标准库头文件
C++实现了对C语言标准库的兼容,C语言的头文件命名格式为name.h,C++则会将这些头文件命名为cname,所以cctype其实和ctype.h是一样的。特别的,在名为cname的头文件中定义的名字从属于命名空间std,而定义在名为.h的头文件则不是。
范围for(declaration:expression)遍历
declaration负责定义一个变量,expression则表示一个对象,每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。

用这个方式遍历a。
如果想改变范围for遍历的字符,必须把循环变量定义成引用类型(实际上是把这个变量依次绑定在序列的每个元素上),使用这个引用我们就能改变他绑定的字符。

如果我们想只处理一部分字符,有两种方法可以实现,一种是使用下标,另一种我们不久就会讲到。
下标运算符[],接受的参数为size_type类型,同时从下标0开始。及如果我们想找到a串的第一个字符我们就输入a[0]。
我们可以使用普通for来遍历下标从而实现一部分的访问。

一些比较简单的内容我就没有在这里提及了。。如果有兴趣大家可以自行尝试。