谁能让我知道常规string
类和roguewave的rwcstring
类之间的确切区别。我项目中的代码广泛使用rwcstring
类。我的疑问是,是否同时处理和操纵字符串,那么两者之间的确切区别是什么?还有为什么为什么rwcstring类比常规的string
类更有效?
最佳答案
RogueWave的RWCString
使用一种称为延迟复制的技术来提高其性能。基本上,这意味着复制字符串(通过复制构造函数或复制赋值运算符)实际上并不复制字符串的内容,而只是保留指向原始字符串内容的指针。仅在确实需要复制时才进行复制(通常是因为字符串内容将被修改)。由于不修改字符串是很常见的做法,因此可以显着提高性能。
没有明确禁止std::string
实现使用此技术。实际上,标准中的某些规定是考虑到这种可能的优化。问题在于,有一些方法可以克服此机制,例如获取指向字符串内容的指针并直接更改它们,而无需使用类机制。这就是std::string
使用惰性复制的异常原因。
因此,总而言之,您可能会说RWCString
比std::string
的常规实现更有效,但安全性也更差。
关于c++ - 常规 "string"类之间的区别 "rwcstring"类之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16272628/