任何人都可以让我知道常规string
课程和roguewave的rwcstring
课程之间的确切区别。我项目中的代码广泛使用rwcstring
类。我怀疑的是,如果两者都处理和操纵字符串,那么两者之间的确切区别是什么。另外为什么rwcstring类被认为比常规string
类更有效?
答案 0 :(得分:2)
RogueWave的RWCString
使用称为延迟复制的技术来提高其性能。基本上,这意味着复制字符串(通过复制构造函数或复制赋值运算符)实际上并不复制字符串的内容,而只是保留指向原始字符串内容的指针。只有在真正需要时才会复制副本(通常是因为字符串内容即将被修改)。由于通常不会修改字符串,因此可以提供可衡量的性能提升。
std::string
实现未明确禁止使用此技术。实际上,标准中的一些规定考虑了这种可能的优化。问题是有一些方法可以打败这种机制,例如获取指向字符串内容的指针并直接更改它们,而不使用类机制。这就是std::string
使用延迟复制的原因不常见的原因。
所以,总而言之,你可以说RWCString
效率更高,但也比std::string
的常规实现更不安全。
答案 1 :(得分:0)