以空格分割字符串 取分割后重复的字符
#include <iostream>
#include <string>
#include <vector>
#include<sstream>
using namespace std;
int main()
{
string temp = "one one two three four two";
vector<string> strSub; //用于存放分割后的字符串
vector<string> res; //存放重复的字符串
string result;
stringstream input(temp);
while (input >> result) //分割字符串
strSub.push_back(result);
for (int i = 0; i < strSub.size()-1; ++i) //当前字符串依次与后面字符串对比
{
int j = i+1;
while (j < strSub.size())
{
if (strSub[i] == strSub[j])
{
res.push_back(strSub[i]);
break;
}
j++;
}
}
for (int i = 0; i<res.size(); i++){
cout << res[i] << endl;
}
system("pause");
return 0;
}
对重复多次的字符串只取一次
#include <iostream>
#include <string>
#include <vector>
#include<sstream>
using namespace std;
int main()
{
string temp = "one one two three four two one one one three";
vector<string> strSub; //用于存放分割后的字符串
vector<string> res; //存放重复的字符串
string result;
stringstream input(temp);
while (input >> result) //分割字符串
strSub.push_back(result);
string strRepetition = ""; //重复的字符串的下标
for (int i = 0; i < strSub.size(); ++i) //当前字符串依次与后面字符串对比
{
if (strRepetition.find(("," + to_string(i))) != -1) //判断是否是已对比后的下标
continue;
int j = i + 1;
int subNum = 0; //该字符串重复的个数
while (j < strSub.size())
{
if (strSub[i] == strSub[j])
{
subNum++;
strRepetition += ("," + to_string(j)); //存重复字符串的下标,下次循环直接跳过
}
j++;
if (j == strSub.size()) //对重复的字符串只保存一次
{
if (subNum > 0)
{
res.push_back(strSub[i]);
}
}
}
}
for (int i = 0; i<res.size(); i++){
cout << res[i] << endl;
}
system("pause");
return 0;
}