10

想象一下,我有一个包含以下内容的 QString:

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

我如何找出我的 QString 中有多少哈希?换句话说,我怎样才能从这个字符串中得到数字 9?


回答

多亏了答案,解决方案非常简单,忽略了在使用 count() 方法的文档中,您可以将所计数的内容作为参数传递。

4

2 回答 2

12

您可以使用方法并传递#字符:

#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 && ./a.out

输出将是:9

正如您所看到的,您无需自己进行迭代,因为 Qt 便捷方法已经使用 internal 为您完成了这项工作qt_string_count

于 2013-08-31T11:06:49.717 回答
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;
于 2013-08-31T11:02:52.770 回答