关于string对象的一些事
1.string对象来源于C++标准库string;,表示一种可变长的字符序列,定义在命名空间std之中。
2.string对象无初始值默认为空字符串。
3.若是使用等号对string变量进行初始化,属于拷贝初始化,不使用等号,如string s6("hiya"); string s7{"11123"}; string s8(10,"c");等,则属于直接初始化。
4.在C++中,可以这样的方法while(std::cin >> s),原理是:括号内的表达式在读取到空格或换行时,会结束一次循环。
5.可以使用getline函数,参数是一个输入流和string对象,如getline(std::cin,s),一旦读取到换行符,才算一次结束。
6.每个string对象都有empty()和size()函数,前者在对象为空时会返回1,后者会返回对象的长度。注:size()返回值类型属于string::size_type类型,不得与int类型变量在同一个表达式中使用。
7.string对象间比较规则:(1)部分相同比长度(2)遇到不同比第一个相异字符,若谁的第一个相异字符对应的ASCII码更大,谁就更大。
8.string对象可以和字符串字面值相加,如string s = "o" + s1;,但是string s = "p" + "q";,则是非法的,因为两个字面值无法相加,这是由于C++为了兼容C语言而背上的历史包袱,导致字面值并非属于string类型,而是char[]类型。
9.由于string对象属于一个字符序列,使得它可以被用于C++11标准中规定的一种新的for语句:范围for语句,其形式是for(declaration : expression) expressions; ,使用如此办法可以遍历序列中的每一个元素。若是想改变string中的每一个字符,可以在范围for语句中声明string元素的引用,然后在循环体中用引用来修改元素。
10.s[0]返回的是s对象的第一个元素的引用。
关于vector的一些事
1.vector与数组类似,它是动态的,使用的时候不指定长度性能会更高,使用c的习惯给vector预先设定长度反而性能更低。
偶然发现
1.C++中单引号括起来的是字符,双引号括起来算字符串