第三章 标准库类型

有一种情况下,必须总是使用完全限定的标准库名字:在头文件中.理由是头文件的内容会被预处理器复制到程序中.用#include包含文件时,相当于头文件中的文本将成为我们编写的文件的一部分。如果在头文件中放置using声明,就相当于在包含该头文件的每个程序中都放置了同一using声明,不论该程序是否需要using声明.
 
cin>>s;
string类型的输入操作符:
1.读取并忽略开头所有的空白字符(如,空格,换行符,制表符).
2.读取字符直至再次遇到空白字符,读取终止.
因此,如果输入到程序的是"   hello  world  ",则只能输出hello.
 
注意:一般而言,应该尽量避免使用using指示而是用using声明,因为如果应用程序中使用了多个库,,使用using指示引入这些库中定义的名字空间,容易导致名字冲突.
 
using指示:using namespace std;
using声明:using std::cin;
 
string 类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中).
getline函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去但并不存储在string对象中)
string的size()返回的是字符的个数 ,但是,size()成员函数返回的不是整型数值,而是string::size_type
 
string st1,st2="The expense of spirit";
st1 = st2;
大多数string库类型的赋值等操作的实现都会遇到一些效率上的问题,但值得注意的是,从概念上讲,赋值操作确实需要做一些工作.它必须先把st1占用 的相关内存释放掉,然后再分配给st1足够存放st2副本的内存空间,最后把st2中的所有字符复制到新分配的内存空间.
 
当运行string 对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的 :
string s4 ="hello"+"world" ; error:no string operand
表达式试图将两个字符串字面值连接起来.这是不允许的.
 
const_iterator
vector::iterator改变vector中的元素值.每种容器类型还定义了一种为const_iterator的类型,l该类型只能用于读取容器内元素,但不能改变其值。
原文地址:https://www.cnblogs.com/crazycodehzp/p/3239931.html