string使用总结
来源:互联网 发布:小跳蛙这歌有毒 知乎 编辑:程序博客网 时间:2024/06/04 20:15
1.初始化
string s0;
string s1("hello");
string s2(5, 'a');
string s3(s1);
char str[100] = "aaaaabbbbbaaaaaaaaaaaaaa
string s4(str, 5);
string s5(str+5, str+10);
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);
s.assign(s2);
s.assign(s2, start, num);
s.assign(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);
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,);
set的使用
#include <iostream>
#include <set>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for(int i = 0; i < 5; ++i)
set<int> sett(v.begin(), v.end());
set<int>::iterator iter, iter2;
sett.insert(8);
iter = sett.find(2);
if(iter != sett.end())
for(iter = sett.begin(); iter != sett.end(); ++iter)
sett.erase(1);
if(!sett.count(1))
iter2 = sett.upper_bound(4);
for(iter = sett.begin(); iter != iter2; ++iter)
return 0;
}
注意事项:
1.当只想知道一个值是否存在时,使用set容器是最合适的。
2.正如不能修改map中元素的键部分一样,set中的键也为const。在获取指向set中某元素的迭代器后,只能对其做读操作,而不能做写操作
- string使用总结
- String类使用总结
- string 方法使用总结
- String Data JPA使用总结
- String类的使用总结
- 设置数据格式与String.Format使用总结
- Android中string.xml使用总结
- Android中string.xml使用总结
- Android中string.xml使用总结
- Android中string.xml使用总结
- Android中String.xml的使用总结
- C++ string类的使用总结
- char *、CString和string使用总结
- Android中string.xml使用总结
- Android之string.xml 使用总结
- Android中string.xml使用总结
- Java中String使用总结(1)
- String总结
- 谈国画家毕建勋《来自结构深处的画面张力》 方岚
- 5个Ajax最佳实践
- smarty中的缓存问题
- CListBox控件的Multicolumn属性
- MYSQL 内存表的使用总结
- string使用总结
- 如何取的SYBASE中正在执行的SQL语句
- 如何得到IE的历史记录和清除IE的历史记录
- JCA 1.5: 优化和生命周期管理
- smarty缓存
- Smarty缓存
- 反编译工具,很赞
- Hbase shell 常用命令(1)
- 主流web2.0网站的配色参考方案