现在的位置: 首页 > 综合 > 正文

string用法总结

2013年10月10日 ⁄ 综合 ⁄ 共 1332字 ⁄ 字号 评论关闭
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)是数字

抱歉!评论已关闭.