C ++中的共享字符串?

时间:2009-11-02 08:54:05

标签: c++ string

您建议使用C ++的“共享字符串”实现吗?

(对不起,如果我错过了类似的问题。我看了看但找不到)

3 个答案:

答案 0 :(得分:1)

我会使用STL:std::stringstd::wstring

只有当你需要更多花哨的东西时,才能使用智能指针来包装你自己的实现。这些智能指针存在于新的C ++ STL或boost中。

  • boost::shared_ptr例如if 你在DLL里面使用它
  • boost::intrusive_ptr适用于DLL 边界。

编辑:就像评论中所评论的那样,STL字符串不能保证本质上是不可变的。如果您希望如此,请使用const说明符。

答案 1 :(得分:1)

std ::(w)字符串可以共享,但这不是标准规定的。 QString使用atomic refcount进行分享。

答案 2 :(得分:0)

我建议从标准字符串std::stringstd::wstring开始。

然而,有一点需要注意:

这两个字符串类都没有强制执行特定的编码。如果您希望应用程序在处理其他语言环境或英语以外的其他语言时表现良好,则应该从std :: wstring开始,或使用UTF8-CPP之类的东西来处理UTF-8字符串。

作为Joel Spolsky pointed out,您必须知道您的字符串所处的编码才能正确处理它们。