【1】string对象初始化方法: ①不带初始化式:使用默认构造函数初始化string对象为空串 ②使用一个已存在的string对象作为初始化式,将新建的string对象初始化为已存在对象的副本。 ③使用字符串字面值作为初始化式,将新创建的string对象初始化为字符串字面值的副本
【2】 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数或为所有形参提供默认实参的构造函数定义。
如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类生成默认构造函数称为合成的默认构造函数
【3】string 对象比较操作符是区分大小写的,即同一个字符的大小写形式被认为是两个不同的字符。在多数计算机上,大写的字母位于小写字母之前:任何一个大写字母都不小于任意的小写字母。
【4】string类型的输入操作符对空白符的处理:读取并忽略有效字符(费空白字符)之前所有的空白符,然后读取字符直至再次遇到空白字符,读取终止(该字符滞留在输入流中)。
getline函数对空白符的处理:不忽略行开头的空白符,读取字符直至遇到换行符。读取终止并丢弃换行符。
【5】任何存储string 的size 操作结果的的变量必须是string::size_type类型。特别重要的是,不要把 size 的返回值赋给一个int变量。保存一个string对象的size的最安全的方法就是使用标准库提供的类型string::size_type。
【6】string库类型的赋值等操作的实现都会遇到效率上的问题。从概念上讲,赋值操作的确需要做一些工作:string str1,str2="test string"; str1=str2; 它必须先把str1占用的相关内存释放掉,然后再分配给str1足够存放str2副本的内存空间,最后把str2的所有字符复制到新分配的内存空间。