我正在对 QString 执行一些操作来修剪它,但我不想影响原始字符串。我是 Qt 新手,对使用各种 QString 函数的正确方法感到困惑,因为有些是 const,有些不是。到目前为止,这就是我所拥有的:
// this needs to be const so it doesn't get modified.
// code later on is depending on this QString being unchanged
const QString string = getString();
我需要调用的方法是QString::simplified()
、QString::remove()
和QString::trimmed()
。令人困惑的部分是什么是正确的方法,因为simplified()
and trimmed()
are const
,但remove()
不是。请记住,我要复制原件并直接对副本进行修改,这就是我所拥有的:
// simplified() is a const function but no problem because I want a copy of it
QString copy = string.simplified();
// remove is non-const so it operates on the handle object, which is what I want
copy.remove( "foo:", Qt::CaseInsensitive );
// trimmed() is const, but I want it to affect the original
copy = copy.trimmed();
是否使用copy = copy.trimmed()
正确的方法来处理这种情况?这会实现我的目标,即为下一次使用修剪副本()吗?有没有更好(更优雅、更高效、更 Qtish)的方法来做到这一点?
我检查了QString Qt 文档并不能令人满意地回答这些问题。