string中 find()的应用 (rfind() 类似,只是从反向查找)
原型如下:
(1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象
(2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串
(3)size_t find (const char* s, size_t pos, size_t n) const; //查找对象--字符串的前n个字符
(4)size_t find (char c, size_t pos = 0) const; //查找对象--字符
结果:找到 -- 返回 第一个字符的索引
没找到--返回 string::npos
有兴趣的,你可以查看其他函数的应用。下面,我们来看看怎么实现这个功能,我们利用的是上面函数的第四种形式,指定查找的位置pos,从这里开始查找我们要查找的数据,如果找到了,说明该元素必定重复了。下面看看算法:
#include "string"
#include "iostream"
#include "windows.h"
using namespace std;
int main()
{
string str;
const char *a;
int len;
string s;
int i;
int index;
while(getline(cin,str))
{
len=str.length();
a=str.c_str();
for(i=0; i<len; i++)
{
index=str.find(a[i],i+1);//从i+1后开始查找元素
if(index!=str.npos)
{
cout<<a[index]<<endl;
i=len;
}
}
}
system("pause");
return 0;
}
实现:其实对于移除重复元素这一功能,我印象比较深的就是stl中的remove算法。有想学习STLremove算法的,请在本找搜索相关文章,有介绍哦!