1、(C++11)基于范围的for语句:for(定义一个变量用于访问序列中的基础元素:表示一个序列的对象)
string s("hello");//string对象表示一个字符的序列
for(auto c:s)//每次迭代,c被初始化为s中的下一个字符
//要执行的操作
2、(C++11)上述操作只能用于读取string对象,如果想要改变string对象中字符的值,则必须把循环变量定义成引用类型。当使用引用作为循环控制变量时,这个变量实际上被依次绑定到了序列的每个元素上。
string s("hello");
for(auto &c:s)
c='o';
3、使用下标运算符([ ])可以用于访问string对象中指定的某个字符。
3.1、其接受的参数是string::size_type类型的值并从0计起表示要访问的字符的位置,返回该位置上的字符的引用。
3.2、string对象的下标必须大于等于0而小于string对象的长度,C++并不要求标准库检测下标是否合法,故一旦使用了一个超出范围的下标将引发不可预知的结果。由此推断,使用下标访问空string也会引发不可预知的结果,所以在访问之前,应首先确认对象是否为空。
string s;
if(!s.empty())
s[0]='o';//只要字符不是常量,就可以为下标运算符返回的字符重新复制
3.3、下标的值称作“下标”或“索引”,如果某个索引是带符号类型的值将自动转换成string::size_type类型。