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;
部分字符处理:使用下标或者迭代器