取出出现过不止一次的字符

如何输出一个string中出现过不止一次的单词?例如输入“one one two”需要得到one?

空格分割,轮询对比

#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;
}

 

代码如下,如有帮助,请给个采纳,谢谢。

#include <iostream>
#include <map>
#include <string>
using namespace std;

//遇到" "即将字符串分割成小字符串
void DealStr(string pStr, char ch,map<string,int>& mapReturn)
{
	string strtmp = "";
	int nStartPos=0;
	int nEndPos=0;
	map<string,int>::iterator it;
	while((nEndPos = pStr.find(ch,nStartPos))> 0)
	{
		strtmp = pStr.substr(nStartPos,nEndPos - nStartPos);
		
		if(!strtmp.empty())
		{
			it = mapReturn.find(strtmp);
			if (it == mapReturn.end())
			{
				mapReturn.insert(pair<string,int>(strtmp,1));
			}else
			{
				int nmb = it->second + 1;
				mapReturn.erase(it);
				mapReturn.insert(pair<string,int>(strtmp,nmb));
			}
			
		}
		nStartPos = nEndPos+1;
	}
	nEndPos=pStr.find('\0',0);
	strtmp = pStr.substr(nStartPos,nEndPos-nStartPos);
	if(!strtmp.empty())
	{
		it = mapReturn.find(strtmp);
		if (it == mapReturn.end())
		{
			mapReturn.insert(pair<string,int>(strtmp,1));
		}else
		{
			int nmb = it->second + 1;
			mapReturn.erase(it);
			mapReturn.insert(pair<string,int>(strtmp,nmb));
		}
	}
}

int main()
{
	char buf[200] = {0};
	cout <<"请输入一个字符串:";
	cin.getline(buf,200);
	map<string,int> vout;
	DealStr(buf,' ',vout);
	map<string,int>::iterator it = vout.begin();
	for (; it != vout.end(); it++)
	{
		if(it->second > 1)
			cout << it->first << endl;
	}
	return 0;
}