string 对象上的操作
-
读写对象
cin >> str;
,将标准输入的内容读到str
对象中,从第一个有效字符开始直到空白(空格、换行等) -
getline
读取一整行
getline(cin, str)
可以保留输入中的空白符,一直读到换行符为止(换行符也读进去了,但返回时会被丢掉),然后存入 string 对象中(不存换行符) -
size 操作
size 返回的是 string::size_type 类型,是一个无符号数(切忌混用无符号数和有符号数),可以通过auto
或者decltype
来推断 -
比较
string
对象优先按字典序比较,若字典序无法比较出结果,则再按长度比较
-
两个 string 对象相加
将两个 string 拼接起来得到一个新的 string 对象 -
字面值和 string 对象相加
字面值可以转换成 string 对象
字面值之间是不能拼接的,例如string s = "hello" + "world";
,这是错误的
加号两边至少有一个是 string 对象才能实现字面值和 string 对象的拼接
处理 string 对象中的字符
-
范围 for 循环
作用:对于 string 对象中的每一个字符(迭代得到)执行操作(要想改变原字符串需要加引用)void test() { string s1("hello world"); for (auto &c : s1) { c = toupper(c); } cout << s1 << endl; // HELLO WORLD }
-
下标运算符[]
参数:字符的 index
返回值:index 处字符的引用
使用超出范围的下标会引发不可预知的结果(需要避免) -
普通 for 循环
首先要确保下标不越界(体现在循环条件中),然后结合下标运算符进行操作void test() { string s1("hello world"); for (auto &c : s1) { c = toupper(c); } cout << s1 << endl; // HELLO WORLD for (int i = 0; i < s1.size(); i++) { s1[i] = tolower(s1[i]); } cout << s1 << endl; // hello world }