std :: string是否比QString差?

时间:2014-12-18 07:19:08

标签: c++ qt stdstring qstring

我的一位同事声称std::string的实施,特别是内存管理不如Qt库中的QStringstd::string的哪些方面也可以引用?

2 个答案:

答案 0 :(得分:13)

关于内存管理,QString使用copy-on-write,现在在C ++标准库中明确禁止。但这是有原因的。写时复制习语在多线程环境中表现更差,因为它需要同步。 This article更详细地讨论了这些问题。

另一方面,std::string的实现通常使用小字符串优化(SSO)来避免小字符串的任何动态内存分配。这是字符串的当前最新技术。

答案 1 :(得分:1)

通过内存管理,您必须确定哪种方式更适合您的应用程序。但是,与std :: string相比,QString明显闪耀的一个地方是unicode支持。 QString在内部存储UTF-16编码的字符串,而std :: string是编码不可知的。当你必须处理用户提供的多字节编码字符串时,这通常使得使用QString而不是std :: string变得更加简单。