C++ 如何将char*转换为boost::shared\u ptr?

C++ 如何将char*转换为boost::shared\u ptr?,c++,boost,C++,Boost,我有一个普通指针char*,如何将char*转换为boost::shared\u ptr char *str = "abcdfg"; boost::shared_ptr<char> ss = ?(str); char*str=“abcdfg”; boost::shared_ptr ss=?(str); 无法将字符串文字转换为共享指针。让我“更正”您的代码,然后剩下的就是未定义的行为: 但是,如果您这样做只是为了在字符串上具有RAII语义,那么首先为什么不使用std::string

我有一个普通指针
char*
,如何将
char*
转换为
boost::shared\u ptr

char *str = "abcdfg";
boost::shared_ptr<char> ss = ?(str);
char*str=“abcdfg”;
boost::shared_ptr ss=?(str);

无法将字符串文字转换为共享指针。让我“更正”您的代码,然后剩下的就是未定义的行为:

但是,如果您这样做只是为了在字符串上具有RAII语义,那么首先为什么不使用
std::string

std::string sss( str );

你看过说明书了吗?当
shared\u ptr
试图删除字符串文字时,您认为会发生什么情况?
const char *str = "abcdfg";
boost::shared_ptr<char> ss( new char[std::strlen(str)+1] );
std::strcpy( ss.get(), str );
std::string sss( str );