#我看到的一个题目是 循环得到一个字符串,但字符串会有重复,需要去重后才能使用。利用sstream可以做到数组去重。
代码如下:
#include <iostream>
#include <string>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sstream>
#include <unistd.h>
using namespace std;
void clearBuff(std::stringstream&sstream){
sstream.str("");//清空buffer
sstream.clear();//初始化流
}
char _kg = ' ';
std::string _rmtmp;
bool rmRepet(std::stringstream&sstream,std::string&buf,std::string&str)
{
if(std::string::npos==buf.find(str))//检查是否有子字符串
{
buf+=str;
buf+=_kg;
return false;//如果没有
}else
{
sstream<<buf;
while(sstream)
{
sstream>>_rmtmp;
if(0==_rmtmp.compare(str))//如果存在
{
clearBuff(sstream);
return true;
}
}
return false;
}
}
int main()
{
std::stringstream sstream;
std::string str,buf;
buf="😄 哈哈 csdn Selimemr debottm ";//把一条字符串当做数组来使用,如果不存在则+=到buf里面,存在则返回true
str="哈哈i";
if (rmRepet(sstream,buf,str))
{
std::cout<<"存在";
}else
{
std::cout<<"不存在";
}
}
##PS:突然想到的一种方法,可能会出现效率问题吧,我没有测试,好心的兄弟测试一下告我。