Qt 中的 QRegExp 和空字符
QRegExp and Null Character in Qt
我想用正则表达式在二进制文件中搜索。
我在文本文件中搜索成功,但在二进制文件中不匹配,因为函数 indexIn 中的 QRegExp 在遇到 NULL 字符 (chr(0)) 时停止搜索。
我该怎么做才能解决这个问题?
QString
可以包含空字符,只是它的构造函数不一致...
QString::fromUtf8(const char *str, int size = -1)
使用给定大小,而 QString::fromUtf8(const QByteArray &str)
强制使用 strlen 而不是使用 bytearray 大小。自己看看 Qt code.
QRegExp
也支持空字符:
QString s(QChar(0));
QRegExp re(s);
qDebug() << re.indexIn(s); // will print 0, not -1
我想用正则表达式在二进制文件中搜索。 我在文本文件中搜索成功,但在二进制文件中不匹配,因为函数 indexIn 中的 QRegExp 在遇到 NULL 字符 (chr(0)) 时停止搜索。 我该怎么做才能解决这个问题?
QString
可以包含空字符,只是它的构造函数不一致...
QString::fromUtf8(const char *str, int size = -1)
使用给定大小,而 QString::fromUtf8(const QByteArray &str)
强制使用 strlen 而不是使用 bytearray 大小。自己看看 Qt code.
QRegExp
也支持空字符:
QString s(QChar(0));
QRegExp re(s);
qDebug() << re.indexIn(s); // will print 0, not -1