想象一下,我有一个包含这个的QString:
"#### some random text ### other info
a line break ## something else"
我如何知道我的QString中有多少哈希值? 换句话说,如何从该字符串中获取数字9?
感谢答案,解决方案很简单,在文档中忽略了 使用count()方法,您可以传递您正在计算的参数。
答案 0 :(得分:11)
您可以使用this方法并传递#
字符:
#include <QString>
#include <QDebug>
int main()
{
// Replace the QStringLiteral macro with QLatin1String if you are using Qt 4.
QString myString = QStringLiteral("#### some random text ### other info\n \
a line break ## something else");
qDebug() << myString.count(QLatin1Char('#'));
return 0;
}
然后使用gcc,你可以使用以下命令或类似的东西来查看结果。
g ++ -I / usr / include / qt -I / usr / include / qt / QtCore -lQt5Core -fPIC main109.cpp&amp;&amp; ./a.out
输出将是:9
正如您所看到的,没有必要自行迭代,因为Qt便捷方法已经为您使用内部qt_string_count
.
答案 1 :(得分:2)
似乎QString有有用的计数方法。
http://qt-project.org/doc/qt-5.0/qtcore/qstring.html#count-3
或者你可以循环遍历字符串中的每个字符,并在找到#
时递增变量。
unsigned int hCount(0);
for(QString::const_iterator itr(str.begin()); itr != str.end(); ++itr)
if(*itr == '#') ++hCount;
<强> C ++ 11 强>
unsigned int hCount{0}; for(const auto& c : str) if(c == '#') ++hCount;