如何计算QString Qt中的特定字符

时间:2013-08-31 10:57:04

标签: c++ qt qt5 qstring

想象一下,我有一个包含这个的QString:

"#### some random text ### other info
a line break ## something else"

我如何知道我的QString中有多少哈希值? 换句话说,如何从该字符串中获取数字9?


答案

感谢答案,解决方案很简单,在文档中忽略了 使用count()方法,您可以传递您正在计算的参数。

2 个答案:

答案 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;