How to count a particular character in QString Qt

Vincent Duprez picture Vincent Duprez · Aug 31, 2013 · Viewed 14.9k times · Source

Imagine I have a QString containing this:

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

How would I find out how many hashes are in my QString? In other words how can I get the number 9 out of this string?


answer

Thanks to the answers, Solution was quite simple, overlooked that in the documentation using the count() method, you can pass as argument what you're counting.

Answer

lpapp picture lpapp · Aug 31, 2013

You could use this method and pass the # character:

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

Then with gcc for instance, you can the following command or something similar to see the result.

g++ -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core -fPIC main109.cpp && ./a.out

Output will be: 9

As you can see, there is no need for iterating through yourself as the Qt convenience method already does that for you using the internal qt_string_count.