2016-07-02 11 views
0

我想用正則表達式在二進制文件中搜索。 我的搜索在Text文件中成功,但在二進制文件中不匹配,因爲函數indexIn中的QRegExp在遇到NULL字符(chr(0))時停止搜索。 我能做些什麼來解決這個問題?Qt中的QRegExp和Null字符

回答

1

QString可以包含空字符,這只是它的構造函數不一致......

QString::fromUtf8(const char *str, int size = -1)使用給定大小,而QString::fromUtf8(const QByteArray &str)強制strlen的,而不是使用字節組大小。自己看看Qt code

QRegExp還支持空字符:

QString s(QChar(0)); 
QRegExp re(s); 
qDebug() << re.indexIn(s); // will print 0, not -1 
+1

但不要用'fromUtf8',它的變化比127更大的還應該有一個編碼功能的所有字節的表示。例如,來自拉丁1。 – ilotXXI

+0

糟糕,你絕對是對的,我太關注null char問題,忘記了其餘的字節。 –