QRegExp и нулевой символ в Qt
Я хочу поиск в двоичном файле с регулярным выражением. Мой поиск успешен в текстовых файлах, но не совпадает в двоичном файле, потому что QRegExp в функции indexIn останавливает поиск, когда встречается символ NULL (chr(0)). что я могу сделать, чтобы решить эту проблему?
1 ответ
Решение
QString
может содержать нулевые символы, просто его конструкторы несовместимы...
QString::fromUtf8(const char *str, int size = -1)
использует данный размер, в то время как QString::fromUtf8(const QByteArray &str)
заставляет strlen вместо использования размера bytearray. Убедитесь сами в Qt-коде.
QRegExp
также поддерживает нулевые символы:
QString s(QChar(0));
QRegExp re(s);
qDebug() << re.indexIn(s); // will print 0, not -1