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
Другие вопросы по тегам