const_string的重点是避免在字符串不应该改变时制作一个不必要的副本。
但是,有些情况下你不能保证const char * source的生命周期比const_string更长,例如,如果使用const_string作为map的键,如果某些const char *被回收,你将会在你面前进行调试时会有非常有趣的分段错误。
有没有办法告诉const_string,嘿朋友,请保留这个const char的私人副本*?或者std :: string?
我会参考a previous question,以便了解我的目标。
答案 0 :(得分:1)
什么不起作用?通过查看代码(文档最好是平庸),我可以看到const_string(charp)
(而const_string(boost::cref(charp))
与charp
char*
相对应const_string(Iterator begin, Iterator end)
应该复制另一种可能性是使用const_string_storage
构造函数。(参见storage.hpp
中的std::basic_string
的双参数构造函数,第153行)
他们甚至在他们的测试中使用临时const_string
来初始化{{1}}(说实话,我还没有运行它),所以 应该正常工作。