码迷,mamicode.com
首页 > 其他好文 > 详细

String类的总结

时间:2014-12-24 13:16:13      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

  

1.初始化


string s0;
string s1("hello");
string s2(5, ‘a‘); //s2 = aaaaa;
string s3(s1); // s3 = hello
char str[100] = "aaaaabbbbbaaaaaaaaaaaaaaaaa";
string s4(str, 5); //s4 = aaaaa;
string s5(str+5, str+10); //s5 = bbbbb;

2.find函数


string s("bbabbabba"),s1("a");
s.find(‘a‘, pos = 0);
s.find(s1, pos = 0);
s.find("ab", pos = 0, num);
总结:
(1)find()返回一个size_type类型的数据,可以这样去判读是否找到:
basic_string<char>::size_type t = s.find(...);
if(t == string::npos) cout << "not find" << endl;
npos是string的一个静态成员变量,所以用string类名来修饰。
(2)第二个参数表示查找的起始位置,默认为0;
(3)如果是查找c类型的字符串还可以有第三个参数,表示要找这个字符串的前几个字符。
如(“absdfasdf”,5,2)表示,在原字符串的下表为5的位置开始找“ab”;
(4)具有相同语法的还有下面几个函数:
find_first_of(): 找第一次满足条件的位置
find_last_of(): 找最后一个满足条件的位置
find_first_not_of(): 找第一个不符合条件的位置
find_last_not_of():找最后一个不符合条件的位置
rfind(): 从后往前找

3.size_type capacity( ) const;
返回已经分配的存储空间大小。

4.length()和size()返回同样的值,都是string的大小。
length()是以前的string实现的函数。
size()是为了同STL融合,加入的函数。

5.substr(start = 0, num = npos);
返回string的一部分,有开始位置和个数,两个参数。

6.resize(num = 0, char = 0);

7.assign()函数

s.assign(cstr, num = 0); //c_char*类型的从0开始拷贝num个进去。
s.assign(s2); //string类型的s2
s.assign(s2, start, num); // string类型的s2,从第start个位置开始,拷贝num个
s.assign(num, char); / / 拷贝num个char进去
s.assign(s2.begin(), s2.end() ); //迭代器版本

8.append()函数
同上!

10.swap(s2);

11.push_back(ch);

12.insert()函数

s1.insert(pos, *ptr);
s1.insert(pos, *ptr, num);
s1.insert(pos, s2);
s1.insert(pos, s2, start, num);
s1.insert(pos, num, ch); //在pos初加入num个char
s1.insert(iterator, s2.begin(), s2.end());
s1.insert(iterator, num, ch);

13.erase()函数

erase(s.begin(), s.end());
erase(iterator);
erase(pos = 0, num = npos); //默认全部删除

14.replace()函数

replace(pos, num, *ptr, num2 = npos); //用*ptr的num2个元素替换原string从pos开始的num个元素
replace(pos, num, s2, num2 = npos);
replace(pos, num, num2, ch); //原stringpos位置处的num个由num2个ch替换
replace(iter_first, iter_last, *ptr);
replace(iter_first, iter_last, s2);
replace(iter_first, iter_last, num2, ch);
replace(iter_first, iter_last, iter2_first, iter2_last,);

String类的总结

标签:

原文地址:http://www.cnblogs.com/kingjie/p/4182098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!