【发布时间】:2018-04-09 12:25:36
【问题描述】:
以无损方式调用QString::replace 的最佳方式是什么?
我有一个以const QString&为参数的函数,那么我不能直接调用replace,因为这个函数修改了对象(remove也一样)。
我想对参数进行链接调用并将其用作如下表达式:
return myString.replace(QRegExp("\\s+"), "_").remove("someSuffix");
当然,我可以将函数定义更改为按值而不是引用来获取 QString,但我不喜欢这种解决方案。稍后可能会想知道为什么我们不像其他参数那样通过引用传递。
我也可以制作本地副本,但有没有更实用/干净的方法?
【问题讨论】:
-
这里按值传递是最好的解决方案,下一个是创建本地副本。你还需要什么?
-
您的
myString字符串应该是您传递的函数参数的副本。 -
最邪恶的方式(如果初始值是非常量):
return const_cast<QString&>(someValue).replace(QRegExp("\\s+"), "_").remove("someSuffix");