文章目录
前言
C++primer第五版第三章的学习记录
一、命名空间的using声明
using std::cin;
using namespace std;
可以单独针对某个函数使用,也可以直接将某个命名空间直接导入。
不要将using声明放到头文件中!,因为头文件的内容会被拷入到所有引用该头文件的文件中去,可能造成命名冲突,切记。
二、标准库类型string
在C++中,存在字符串类型,需要引入头文件string,命名空间std::string;
#include <string>
using std::string;
2.1 关于string.size()
.size()的返回值是一个string::size_type类型的数,该数是一个无符号数,不要与有符号数进行比较,否则无符号数转为有符号数可能为负数,比较结果不正确。
2.2关于加法
由于字符和字面值常量都可以转化为string类型,所以可以将string类型和字面值常量相加
string s1 = "hello";
string s2 = s1 + " world";
string s3 = "hello" + "," + s1;//错误
string s4 = "hello" + ("," + s1);//正确
但是字面值常量本身是不能相加的,因此需要注意运算顺序(s3、s4的例子)。
2.2关于部分访问与改变
可以通过for(auto c : string)实现,但需注意的时,若需要改变原字符串,需要使用引用类型,这一点与使用函数的指针做形参类似。
也可以通过下标访问。
2.2与字面值常量、C中字符数组的区别
字面值常量不仅含有可见字符,最后还含有一个空字符
C中字符数组如果要达到字符串效果,同样需要含有空字符
但是string类型则不同,并不含有空字符,而且长度可变。
三、标准库类型vector
四、迭代器
五、数组和多维数组
总结
第三章的内容相对比较熟悉了,主要是与C的一个对比联系