string的初始化
拷贝初始化:使用“=”来初始化时,执行的是拷贝初始化,编译器把右值进行拷贝,复制到创建的新对象中。
直接初始化:不使用等号,直接创建新对象并赋值。
在创建多个值初始化的时候,还是直接初始化更好一点。

string的读写
string对象在读取时会自动忽略空白,并在下一个空白停止读取(即空格,换行,制表符)

string s;
cin>>s;
cout << s <<endl;
//当输入“ Hello World ”时,string会忽略Hello前面的空格,读取Hello后,在后面的空格停止读取
//最终结果为“Hello”无空格

getline函数
读取一行,输入参数为输入流和string对象,不忽略空格,在获取到换行时退出,把内容传给string

处理string对象中的字符
单个字符处理:使用cctype头文件中的函数
遍历字符处理:范围for语句

string str("some string");
for(auto c : str)
    cout << c << endl;//这里c的类型实际是char

使用范围for改变每个字符的值,需要把循环变量定义为引用这样遍历时就可以依次进行绑定,用引用来修改值(否则c虽然会继承s的值,但是修改的是c的值,s没有改变)

string s("world");
for(auto &c : s)
    c = toupper(c);
cout << s << endl;

部分字符处理:使用下标或者迭代器