谁能让我知道常规string类和roguewave的rwcstring类之间的确切区别。我项目中的代码广泛使用rwcstring类。我的疑问是,是否同时处理和操纵字符串,那么两者之间的确切区别是什么?还有为什么为什么rwcstring类比常规的string类更有效?

最佳答案

RogueWave的RWCString使用一种称为延迟复制的技术来提高其性能。基本上,这意味着复制字符串(通过复制构造函数或复制赋值运算符)实际上并不复制字符串的内容,而只是保留指向原始字符串内容的指针。仅在确实需要复制时才进行复制(通常是因为字符串内容将被修改)。由于不修改字符串是很常见的做法,因此可以显着提高性能。

没有明确禁止std::string实现使用此技术。实际上,标准中的某些规定是考虑到这种可能的优化。问题在于,有一些方法可以克服此机制,例如获取指向字符串内容的指针并直接更改它们,而无需使用类机制。这就是std::string使用惰性复制的异常原因。

因此,总而言之,您可能会说RWCStringstd::string的常规实现更有效,但安全性也更差。

关于c++ - 常规 "string"类之间的区别 "rwcstring"类之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16272628/

10-11 06:43