use*_*009 9 c++ memory-management stdstring
我需要在std :: string对象中使用已经分配的char*缓冲区(带有字符串内容).经过一些研究后,我发现这几乎是不可能的,std :: string总是拥有自己的私有数据副本.我能想到的唯一剩下的方法就是使用一个自定义分配器来返回已经分配的char缓冲区的地址.为了实现这一点,std :: string应该只使用allocator来分配内存来保存其字符串数据,而不是其他任何内容.是这样的吗?
std::string是一个typedef basic_string是已经明确使用默认分配器.没有办法std::string使用不同的分配器.即使您basic_string使用所需的分配器创建了一个新的typedef ,也无法将其传递给期望的API std::string.
遗憾的是,除非您能够以某种方式放松一个或多个要求,否则我无法满足您在任何当前C++标准中指定的所有需求.
一个可能的创造性解决方案,如果你能够这样做,将分配你的"orignal" char*缓冲区作为std::string利用resize.然后你就可以将swap这个字符串添加到新的字符串中以使其获得所有权.