0
我正在創建一個簡單的QtBencode解析器作爲熟悉QString類的練習。Qt解析本代碼的方法
我目前的做法創建具有像掃描儀的行爲一個Bencode對象,並通過遞增地前進的字符串指針(pos
),導致代碼看起來像這樣解析(bEncoded
是Bencode QString):
void Bencode::parseInteger() {
qDebug() << "Parsing an Integer";
if(bEncoded.at(pos) != intChar) {
qDebug() << "No leading i for integer";
return;
}
pos++;
QString buf;
if(bEncoded.at(pos).isNumber() || bEncoded.at(pos) == negChar) {
buf.append(bEncoded.at(pos));
pos++;
}
while(bEncoded.at(pos).isNumber()) {
buf.append(bEncoded.at(pos));
pos++;
}
if(!bEncoded.at(pos).unicode() == 'e') {
qDebug() << "No training e for integer";
return;
}
pos++;
qDebug("Integer: %i", buf.toInt());
}
我想知道這是否是一種簡潔的方法。好像我在濫用QString::at()
和QChar==
。在我看來,我認爲RegEx可能更加簡潔,但我想這裏也會提出一些意見。
那麼 - 如何改進這種方法?
這裏所有代碼:https://github.com/jif/Bencode