Если ваши строковые таблицы хранятся в виде строки, как вы изобразили, то есть
Tab1 = "user1, user2, user3, user4"
Tab2 = "user3, user4, user2"
, то вы можете использовать регулярное выражение, чтобы сначала найти пользователей в Tab1 и сохранить их в наборе. При поиске пользователей в Tab2 вы можете проверить, присутствует ли этот пользователь в наборе, если да, то удалить этого пользователя из набора, если нет, затем вставить этого пользователя в набор.
Код:
#include <iostream>
#include <string>
#include <regex>
#include <set>
using namespace std;
ostream& operator<< (ostream& out, const set<string>& S)
{
for (const string& s : S)
out << s << endl;
return out;
}
int main()
{
string Tab1 = "user1, user2, user3, user4";
string Tab2 = "user3, user4, user2";
regex reg("user[0-9]{1,}");
set<string> S;
sregex_iterator pos1(Tab1.cbegin(), Tab1.cend(), reg);
sregex_iterator end1;
while (pos1 != end1)
{
S.insert(pos1->str());
++pos1;
}
sregex_iterator pos2(Tab2.cbegin(), Tab2.cend(), reg);
sregex_iterator end2;
while (pos2 != end2)
{
string temp = pos2->str();
if (S.find(temp) != S.cend())
S.erase(temp);
else
S.insert(temp);
++pos2;
}
cout << S << endl;
}