Pertanyaan Bagaimana cara menghitung karakter tertentu di QString Qt


Bayangkan saya memiliki QString yang mengandung ini:

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

Bagaimana saya mengetahui berapa banyak hash dalam QString saya? Dengan kata lain, bagaimana saya bisa mendapatkan angka 9 dari string ini?


menjawab

Terima kasih atas jawabannya, Solusi cukup sederhana, mengabaikannya dalam dokumentasi menggunakan metode count (), Anda dapat menyampaikan argumen apa yang Anda hitung.


7
2017-08-31 10:57


asal


Jawaban:


Anda bisa menggunakannya ini metode dan lulus # karakter:

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

Kemudian dengan gcc misalnya, Anda dapat mengikuti perintah atau sesuatu yang serupa untuk melihat hasilnya.

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

Outputnya adalah: 9

Seperti yang Anda lihat, Anda tidak perlu melakukan iterasi melalui diri sendiri karena metode Qt convenience sudah melakukannya untuk Anda menggunakan internal qt_string_count.


10
2017-08-31 11:06



Sepertinya QString memiliki metode penghitungan yang berguna.

http://qt-project.org/doc/qt-5.0/qtcore/qstring.html#count-3

Atau Anda bisa merangkai setiap karakter dalam string dan menaikkan variabel ketika Anda menemukannya #.

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;

1
2017-08-31 11:02