Я перебираю qbytearray, который содержит слова из файла. Я буду сравнивать каждое слово с данным словом.
Спасибо за разъяснение. В этом случае Я бы преобразовал QByteArray
в QString
, а затем разделил его на отдельные слова, которые затем можно сравнить тривиально.
// QByteArray is implicitly convertible to QString
QString allWords = yourByteArray;
// split the string at each whitspace or newline
QStringList aWordlist = allWords.split(QRegExp("[\s\r\n]"), QString::SkipEmptyParts)
for (QStringList::iterator it=aWordlist.begin(); it != aWordlist.end(); ++it)
{
// it points to the next word in the list
if (*it == word)
{
...
}
}
Я предполагаю, что вы не можете изменить тот факт, что вы получите содержимое файла в виде массива байтов. В противном случае было бы лучше открыть QFile
и прочитать содержимое оттуда.
Как я могу сравнить значения в этом случае?
Согласно QString documentation, QString
можно сравнить с QByteArray
без перебора. Таким образом, вы могли бы просто сказать:
QString word("Hello");
QByteArray bytes("hi");
if (word == bytes)
{
...
}
Вы в основном извлечь байт ('char' в данном случае) из массива , Затем вы просите Qt сравнить один символ с вашим словом. Это не имеет смысла. – Marius
'Я перебираю QByteArray, содержащий слова'. Это предложение не имеет для меня никакого смысла. Вы имеете в виду, что оно содержит одно слово или несколько конкатенированных слов? – djf
thats right, я имею в виду: я перебираю qbytearray, который содержит слова из файла. Я буду сравнивать каждое слово с данным словом. – user1895683