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

difference between a regular "string" class "rwcstring" class

本文关键字:区别 之间 rwcstring 常规 字符串      更新时间:2023-10-16

谁能告诉我常规的string类和roguewave的rwcstring类的确切区别?我项目中的代码大量使用了rwcstring类。我的疑问是,如果两者都处理和操纵字符串,那么两者之间的确切区别是什么。为什么rwcstring类被认为比常规的string类更有效?

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

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

所以,总而言之,你可能会说RWCString更有效,但也比std::string的通常实现更不安全。

看一下这些文档:

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