想象一下,我有一个包含以下内容的 QString:
"#### some random text ### other info
a line break ## something else"
我如何找出我的 QString 中有多少哈希?换句话说,我怎样才能从这个字符串中得到数字 9?
回答
多亏了答案,解决方案非常简单,忽略了在使用 count() 方法的文档中,您可以将所计数的内容作为参数传递。
您可以使用此方法并传递#
字符:
#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
。
似乎 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;