5

谁能告诉我普通string班和roguewaverwcstring班之间的确切区别。我项目中的代码广泛使用rwcstring该类。我的疑问是,如果两者都处理和操纵字符串,那么两者之间的确切区别是什么。还有为什么 rwcstring 类被认为比普通string类更有效?

4

2 回答 2

3

RogueWaveRWCString使用一种称为惰性复制的技术来提高其性能。基本上,这意味着复制字符串(无论是通过复制构造函数还是复制赋值运算符)实际上并不复制字符串的内容,而只是保留指向原始字符串内容的指针。仅在真正需要时才进行复制(通常是因为字符串内容即将被修改)。由于字符串永远不会被修改是很常见的,这提供了可衡量的性能改进。

std::string没有明确禁止实现使用这种技术。事实上,标准中的一些规定是考虑到这种可能的优化。问题是有一些方法可以破坏这种机制,例如获取指向字符串内容的指针并直接更改它们,而不使用类机制。这就是为什么不std::string使用惰性复制的原因。

所以,总而言之,你可能会说它RWCStringstd::string.

于 2013-04-29T08:19:21.143 回答
0

看看这些文档:

http://www.roguewave.com/portals/0/products/legacy-hpp/docs/tlsref/rwcstring.html

于 2013-04-29T08:00:56.723 回答