const_string的重点是避免在不应该更改字符串时进行不必要的复制。
但是,在某些情况下,你不能保证 const char* 源的生命周期比 const_string 长,例如,如果使用 const_string 作为映射的键,如果某些 const char* 被回收,你会很有趣提前调试的分段错误。
有没有办法告诉 const_string,嘿朋友,请保留这个 const char* 的私人副本?还是 std::string?
我将参考上一个问题,以便您了解我在追求什么。
const_string的重点是避免在不应该更改字符串时进行不必要的复制。
但是,在某些情况下,你不能保证 const char* 源的生命周期比 const_string 长,例如,如果使用 const_string 作为映射的键,如果某些 const char* 被回收,你会很有趣提前调试的分段错误。
有没有办法告诉 const_string,嘿朋友,请保留这个 const char* 的私人副本?还是 std::string?
我将参考上一个问题,以便您了解我在追求什么。
什么不起作用?通过查看代码(文档充其量是平庸的),我可以看到const_string(charp)
(而不是const_string(boost::cref(charp))
应该charp
复制char*
数据。另一种可能性是使用构造函数。(参见inconst_string(Iterator begin, Iterator end)
的双参数构造函数,行153)const_string_storage
storage.hpp
他们甚至在他们的测试中使用临时std::basic_string
来初始化const_string
(老实说我没有运行它),所以它应该可以正常工作。