QRegExp и нулевой символ в Qt

я хочу искать в двоичном файле с регулярным выражением. мой поиск успешен в текстовых файлах, но не совпадает в двоичном файле, потому что QRegExp в функции indexIn останавливает поиск, когда встречает символ NULL (chr (0)). что я могу сделать, чтобы решить эту проблему?


person mohsen amiri    schedule 02.07.2016    source источник


Ответы (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
person λuser    schedule 02.07.2016
comment
Но не используйте fromUtf8, это изменяет представление всех байтов больше 127. Должна быть другая функция кодирования. fromLatin1 например. - person ilotXXI; 02.07.2016
comment
К сожалению, вы определенно правы, я слишком много внимания уделял проблеме нулевого символа и забыл об остальных байтах. - person λuser; 03.07.2016