QRegularExpression和QRegExp之间有什么区别吗
Is there any difference between QRegularExpression and QRegExp?
我发现有一个新的正则表达式类QRegularExpression
。它只是QRegExp的typedef,还是一个新类,或者什么?为什么我们需要它,我们已经有QRegExp了?
好的,在对文档进行了更多的挖掘之后,我发现它确实是一个新的类,它有改进,但它只在Qt5中可用,所以如果你想在Qt4和Qt5:上编译,就不能使用它
QRegExp用户注意事项
Qt 5中引入的QRegularExpression类在提供的API、支持的模式语法和执行速度方面对QRegExp有很大的改进。最大的区别是QRegularExpression只保存一个正则表达式,并且在请求匹配时不会对其进行修改。相反,会返回一个QRegularExpressionMatch对象,以便检查匹配的结果并提取捕获的子字符串。这同样适用于全局匹配和QRegularExpressionMatchIterator。
至少对于Qt 4.8。我可以给出一个非常实用的理由来使用QRegularExpressions
而不是QRegExp
:
你觉得这些危险吗?
int index = myQString.indexOf(myQRegExp);
bool okay = myQString.contains(myQRegExp);
这两行都可能损坏堆、崩溃或挂起应用程序。我经历了堆损坏,并坚持使用Qt 4.8。博客文章QString::indexOf()对比Qt4.5解释了QString::indexOf()
修改const QRegExp
对象。QString::contains()
内联QString::indexOf()
,所以这是相同的问题。
如果你被Qt4和QRegExp卡住了,你可以使用
int index = myQRegExp.indexIn(myQString);
bool okay = (myQRegExp.indexIn(myQString) != -1);
相反,在您的来源中。或者修补Qt来源。
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- typedef 枚举和枚举类有什么区别?
- &C::c 和 &(C::c) 有什么区别?
- ascii 和 unicode 在处理级别有什么区别吗?
- C 中的常量限定符和 C++ 中的常量限定符有什么区别?
- "ABC" 和 "ABC" ) 在C++中有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 两种访问I2C总线的方法有什么区别?
- 两种模板示例有什么区别?
- 这两种C++语法之间有什么区别?
- lua 5.0.2 模块和 5.3.5 有什么区别?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- std::enable_if 和 std::enable_if_t 有什么区别?