2016-12-06 1677 views
1

有没有办法获取重复字符串在QStringList中的次数并将其与字符串本身进行分组?在QStringList中寻找重复的字符串并获得重复的计数

例如,如果列表包含[“a”,“a”,“a”,“a”,“b”,“b”,“b”,“c”,“c”]

我就可以把它变成像

一个x4

b X3

çX2

我唯一的解决办法,现在是使用QList::contains(),然后将它们添加了整数但问题与那是有500个字符串可以进入QStringList,所以我不想创建500个500字符串的字符串。

+0

字符串是否总是像你的例子中分组? – ilotXXI

+0

您可以对列表进行排序,然后遍历它,同时跟踪当前索引处的字符串是否更改。 –

回答

3

试试这个:

QMap<QString,int> countOfStrings; 
QStringList listOfStrings; 
listOfStrings<<"a"<<"b"<<"c"<<"a"; 
for(int i=0;i<listOfStrings.count();i++) 
{ 
    countOfStrings[listOfStrings[i]]++; 
} 

QMap默认int s到0。如果它与第一时间的字符串时,它将自动调用countOfStrings[newStr]

你也可以创建一个具有(newStr,0)入口做qDebug()<<countOfStrings;

+1

在C++ 11中,循环应该写成for for(auto const&str:listOfStrings)countOfStrings [str] ++;' –

+0

我的for循环保证可以在所有情况下工作。提问者没有在C++ 11中寻找答案。如果他/她的组织不允许C++ 11,该怎么办? –

+0

@ MuhammetAliAsan,如果一个组织不使用C++,那么他们不必使用库巴的建议。正如我所看到的,他只是提供额外的信息,而不是批评你的答案。如果他认为你错了,他可以发布自己的答案,甚至编辑你的答案。 – TheDarkKnight