C++ Primer 5 之 字符串&向量&数组

1. 命名空间的using 声明,每个using声明引入命名空间的一个成员。位于头文件的代码,一般来说不应该使用using声明,这是因为头文件的内容会拷贝到所有引用它的文件中去,如果头文件里有某个using声明,那么使用该头文件的文件就都会有这个声明,由于不经意的包含,可能会产生始料未及的名字冲突。我们在(一)中已经提到过,解决这种可能产生的冲突,可采用设置头文件保护符的方式。

2. 标准库类型 string 表示可变长的字符序列,使用时首先包含string头文件: #include <string> 。

3. C++ 初始化方式:使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器吧等号右侧的初始值拷贝到新创建的对象中去,与之相反,如果不适用等号,执行的是直接初始化。

4. string 对象上的操作

os<<s                              将s写到输出流os当中,返回os

is>>s                               从is中读取字符串赋给s,字符串以空白符分割,返回is

getline(is ,s)                 从is中读取一行赋给s,返回is

s.empty()                       s为空返回true,否则返回false

s.size()                          返回s中字符的个数

此外string 对象s 还支持的操作有:+ 、=、==、!=、<、<=、>、>= 。

5. string 对象的size()函数的返回值类型,不是int或unsigned类型,而是string::size_type类型。string类及其他大多数标准库类型都定义了几种配套的类型,这些配套的类型体现了标准可类型与机器无关的特性,类型size_type是其中的一种。尽管我们不知道string::size_type的类型的细节,但是有一点可以肯定:它是无符号类型的值而且能够存放下任何string对象的大小。所有用于存放string类的size函数返回值的变量,都应该是string::size_type类型的,C++11中,允许编译器通过auto或者decltype来推断变量的类型(如果一条表达式中已经有了size()函数就不要再使用int了,这样可以避免混用int和unsigned可能带来的问题)。

6. 当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符的两侧的运算对象至少有一个是string(切记,字符串字面值与string是不同的类型)。

7. 在对string字符串对象的处理过程中,为了能实现改变某个字符的特性,在cctype头文件中定义了一组标准库函数来处理这部分工作:

isalpha(c)          当c是字母是为真

isdigit(c)            当c是数字时为真

isalnum(c)         当c是字母或数字是为真

iscntrl(c)            当c是控制字符是为真

isgraph(c)          当c不是空格但可打印时为真

isprint(c)            当c是可打印字符时为真(即c是空格或具有可视形式)

ispunct(c)          当c是标点符号是时为真

isspace(c)         当c是空白时为真(即c是空格,横向制表符,纵向制表符,回车符,换行符,仅进纸符中的一种)

isxdigit(c)          当c是十六进制的数字时为真

islower(c)          当c是小写字母时为真

isupper(c)          当c是大写字母时为真

tolower(c)          如果c是大写字母,输出对应的小写字母,否则原样输出c

toupper(c)          如果c是小写字母,输出对应的大写字母,否则原样输出c

8. 建议使用C++版本的C标准库头文件

C语言中的头文件形如name.h,C++则将这些文件命名为cname,也就是去掉了.h后缀,而在文件名之前添加了字母c。因为cctype头文件和cctype.h头文件的内容是一样的,只不过从命名规范上来讲更符合C++语言的要求,特别的,在名为cname的头文件中定义的名字属于命名空间std,而定义在名为.h的头文件中的则不然。

9. 范围for语句

           for(declaration:expression)

                    statement

其中,expression部分是一个对象,用于表示序列,declaration部分负责定义一个变量

猜你喜欢

转载自blog.csdn.net/GuoSenZQ/article/details/46891137
今日推荐