将boost :: container :: boost basic_string转换为std :: string

wiz*_*urd 6 c++ boost stdstring boost-interprocess

有一个简单的方法吗?我尝试过以下方法:

typedef allocator<char,managed_shared_memory::segment_manager>
    CharAllocator;
typedef boost::container::basic_string<char, std::char_traits<char>, CharAllocator>
    my_basic_string;

std::string s(my_basic_string);
Run Code Online (Sandbox Code Playgroud)

Mar*_*low 8

正如@TC所说,你应该使用:

std::string s(my_basic_string.data(), my_basic_string.size());
Run Code Online (Sandbox Code Playgroud)

要么

std::string s(my_basic_string.begin(), my_basic_string.end());
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二种,但两种都可以.