boost :: interprocess :: string преобразование в char * - PullRequest
3 голосов
/ 15 сентября 2010

Возможно ли преобразовать boost::interprocess::string в std::string или в const char*?Что-то вроде c_str() ...

Например:

boost::interprocess::string is = "Hello world";
const char* ps = is.c_str();    // something similar
printf("%s", ps);

Я мог бы даже получить копию строки в блоке без общего доступа.

Например:

boost::interprocess::string is = "Hello world";
const char cs[100];
strcpy(cs, is.c_str());    // something similar
printf("%s", cs);

Спасибо!

1 Ответ

3 голосов
/ 17 сентября 2010

boost :: interprocess :: string имеет стандартный метод c_str ().Я нашел следующее здесь :

//! <b>Returns</b>: Returns a pointer to a null-terminated array of characters 
//!   representing the string's contents. For any string s it is guaranteed 
//!   that the first s.size() characters in the array pointed to by s.c_str() 
//!   are equal to the character in s, and that s.c_str()[s.size()] is a null 
//!   character. Note, however, that it not necessarily the first null character. 
//!   Characters within a string are permitted to be null. 
const CharT* c_str() const 
{  return containers_detail::get_pointer(this->priv_addr()); }

(Это для basic_string. string - это экземпляр шаблона, в котором параметр шаблона CharT равен char.)

Также в документации здесь говорится

basic_string - реализация std :: basic_string, готовая для использования в сегментах управляемой памяти, таких как разделяемая память.Он реализован с использованием векторного непрерывного хранилища, поэтому имеет быстрое преобразование строки c ...

...