1. 定义和初始化
string s1;
string s1(s2);
string s1(“ year ”);
string s1(n, ’x’);//s1 为 c 的 n 个副本
string s1(s2,pos,len);//s1 被初始化成 s2 中从 pos 开始的 len 个字符的副本。
2. 读写
cin>>s;// 忽略开头空白字符,到遇到空白字符为止
cout<<s;
也可以作为循环的条件,如 while(cin>>s){…}
getline(cin,line);// 遇到换行符即停止返回
3. 大小和容量
s.empty();// 返回 bool 值
s.size();// 返回 s 里字符的个数。
注意:返回的并不是 int 型,而是 string::size_type 类型的值
for(string::size_type i=0;i!=s.size();i++)
4. 关系判断
if(s1==s2)
if(s1<=s2)// 等效于区分大小写的字典顺序比较
5. 赋值,相加,连接
st1=st2;
st3=st1+st2;
st1 += st2; 把 st2 追加到 st1 末尾
st3=st1 + “girl”;
st4=”girl” + st1;// 错误的!
6. 获取字符
cout<<s[index];
注意:下标是从 0 开始的。
而要注意 s[s.size() - 1] 则表示 s 的最后一个字符。
7. 修改
s1.insert(1,"MM");
s1.insert(1,str);
在 s1[1] 处插入字符。再来一个:
s1.insert(s1.size() , 2,’M’);// 在 s1 的末尾插入 MM (直接 += 不就行了 ~~~ )
s1.assign(s2);// 用 s2 替换 s1
s1.assign(s2,pos,len);
// 用 s2 从 pos 开始的 len 个字符替换 s1
s1.erase(pos,len);// 删除 s1 从 pos 开始的 len 个字符
还有个替换的函数,在插入的同时删除:
s1.replace(1,3,”yearismygf”);// 将 s1 从 1 开始的 3 个字符替换为指定字符
8. 提取字串
s.substr(pos,n);// 返回从 pos 开始的 n 个字符的 string
s.substr(pos);// 从 pos 到末尾
9 .内存输入输出
sprintf(str, "%d " ,i);
sscanf(str, ”%d” ,&i);
10. 查找操作
s1.find("MM");// 返回第一个 MM 的位置
s1.rfind(“MM”);// 返回最后一个 MM 的位置
s1.find("5 , MM");// 从第 5 个字符开始找
11. 比较
string s(“abcd”);
s.compare( “ abcd ” ); // 返回 0
s.compare( “ dcba ” ); // 返回一个小于 0 的值
s.compare( “ ab ” ); // 返回大于 0 的值
s.compare(s); // 相等
s.compare(0,2,s,2,2); // 用” ab ”和” cd ”进行比较 小于零
s.compare(1,2, ” bcx ” ,2); // 用” bc ”和” bc ”比较。
12. 字符处理
#include<cctype>
isalnum(s[i]) 如果 s[i] 是字母或数字 , 则为 true
islower(c) 小写字母
isupper(c) 大写字母
tolower(c)
toupper(c) 转换
isdigit(c) 是数字
……