Из вашего кода не ясно, имелось ли в виду boost :: interprocess :: string или std :: string, но из моих нескольких часов опыта boost :: interprocess (скорее расстраивающих ...) вы не хотите ни ...
Итак, вот
Краткое руководство для строк в boost :: interprocess
Сначала необходимо определить специальную строку:
typedef boost::interprocess::allocator<char, boost::interprocess::managed_shared_memory::segment_manager> CharAllocator;
typedef boost::interprocess::basic_string<char, std::char_traits<char>, CharAllocator> my_string;
Во-вторых, отправляющее приложение должно использовать:
// (mshm is the managed_shared_memory instance from the question)
mshm.construct<my_string>( SOME_STRINGY_NAME )(
"Message to other process",
mshm.get_segment_manager());
Последнее, приложение для чтения должно:
std::pair<my_string * , size_t > p= mshm.find<my_string>(SOME_STRINGY_NAME);
cout<< "got " << p.second << " strings " << endl;
cout<< "first string is->"<<p.first->c_str()<<endl;
Примечание: причина всей этой сложности this .
Приветствия