常规“字符串”类“rwcstring”类之间的区别

时间:2013-04-29 06:40:18

标签: c++ string rogue-wave

任何人都可以让我知道常规string课程和roguewave的rwcstring课程之间的确切区别。我项目中的代码广泛使用rwcstring类。我怀疑的是,如果两者都处理和操纵字符串,那么两者之间的确切区别是什么。另外为什么rwcstring类被认为比常规string类更有效?

2 个答案:

答案 0 :(得分:2)

RogueWave的RWCString使用称为延迟复制的技术来提高其性能。基本上,这意味着复制字符串(通过复制构造函数或复制赋值运算符)实际上并不复制字符串的内容,而只是保留指向原始字符串内容的指针。只有在真正需要时才会复制副本(通常是因为字符串内容即将被修改)。由于通常不会修改字符串,因此可以提供可衡量的性能提升。

std::string实现未明确禁止使用此技术。实际上,标准中的一些规定考虑了这种可能的优化。问题是有一些方法可以打败这种机制,例如获取指向字符串内容的指针并直接更改它们,而不使用类机制。这就是std::string使用延迟复制的原因不常见的原因。

所以,总而言之,你可以说RWCString效率更高,但也比std::string的常规实现更不安全。

答案 1 :(得分:0)