如何在 const 参数上使用 QString::replace?
How to use QString::replace on a const& parameter?
以非破坏性方式调用 QString::replace
的最佳方法是什么?
我有一个以const QString&
作为参数的函数,然后我不能直接调用call replace
,因为这个函数修改了对象(remove
也是如此)。
我想对参数进行链式调用并将其用作表达式,例如:
return myString.replace(QRegExp("\s+"), "_").remove("someSuffix");
当然我可以更改函数定义以按值而非引用获取 QString,但我不喜欢这种解决方案。稍后可能会想知道为什么我们不像其他参数那样通过引用传递。
我也可以制作本地副本,但是还有其他 practical/clean 方式吗?
您可以创建一个临时文件并对其进行操作:
return QString(argument).replace(QRegExp("\s+"), "_").remove("someSuffix");
但是,我认为按价值接受论点没有什么不好。您正在以一种或另一种方式复制参数,并且按值接受清楚地向用户表明这一点。
以非破坏性方式调用 QString::replace
的最佳方法是什么?
我有一个以const QString&
作为参数的函数,然后我不能直接调用call replace
,因为这个函数修改了对象(remove
也是如此)。
我想对参数进行链式调用并将其用作表达式,例如:
return myString.replace(QRegExp("\s+"), "_").remove("someSuffix");
当然我可以更改函数定义以按值而非引用获取 QString,但我不喜欢这种解决方案。稍后可能会想知道为什么我们不像其他参数那样通过引用传递。
我也可以制作本地副本,但是还有其他 practical/clean 方式吗?
您可以创建一个临时文件并对其进行操作:
return QString(argument).replace(QRegExp("\s+"), "_").remove("someSuffix");
但是,我认为按价值接受论点没有什么不好。您正在以一种或另一种方式复制参数,并且按值接受清楚地向用户表明这一点。