对String类型
- 定义:string s1
- string对象初始化:page76
a.默认初始化:
string s;//si默认空串
b.拷贝初始化:
string s2="value";
string s2=s1;
c.直接初始化:
string s3("value");
string s4(s3);
string s4(10,'c');
string s4; s4("value");
//拷贝初始化与直接初始化的区别在于:拷贝初始化有等号。
string对象赋值:page80
string s1(10,’c’), s2;
s1=s2;
*注:如果是s2=s1;则是初始化。
因为初始化的定义是原先没有值,然后最初给一个值,而赋值是原先有一个值,然后把这个值抹掉,重新给它一个值。*string对象的相加:
string+string;
string=string+字符字面值/字符串字面值(每个“+”两边都 至少有一个string)
比如s6=s1+”hello”+”,” 错误
s6=”hello”+s1+”,” 正确
(!!!是“+”号不是”=“)string对象的读写:cin>>String ,string对象会自动忽略前面的空白,从第一个有效字符读起,直至遇到下一个空白
A. for范围主要两种用途有:遍历string对象内元素、改变string中字符
(1)遍历string对象内元素:
string s1="hhhhhhh"
for (auto c : s1)
std::cout <<c << std::endl;
(2)改变string中字符:
string s1="hhhhhhh"
for (auto &c : s1)
c=toupper(c);
std::cout <<c << std::endl;
(!!!注意:此处&c为引用,之所以改变string中字符时要用&c,而不会是c, 是因为auto c 中c相当于副本,只有用&c才能改变string字符中值。)
B.下标:
为保证下标总在合理范围:总是设下标的类型为string::size_type
sting s1="value"
string::size_type n;
while (cin>>n)
if(n<s1.size())
cout<<s1[n];
C.迭代器(暂定)