我有一个普通的指针char *,如何转换char *为boost::shared_ptr?
char *str = "abcdfg";
boost::shared_ptr<char> ss = ?(str);
Run Code Online (Sandbox Code Playgroud)
您无法将字符串文字转换为共享指针.让我只是"纠正"你的代码,然后你剩下的就是未定义的行为:
const char *str = "abcdfg";
boost::shared_ptr<char> ss(str);
Run Code Online (Sandbox Code Playgroud)
现在,这将编译,但它会产生严重的问题,因为str不是动态分配的内存.一旦共享指针被破坏,您将获得未定义的行为.
所以,如果你想要那个字符串,你必须先复制它:
const char *str = "abcdfg";
boost::shared_ptr<char> ss( new char[std::strlen(str)+1] );
std::strcpy( ss.get(), str );
Run Code Online (Sandbox Code Playgroud)
但是,如果您只是为了在字符串上使用RAII语义,为什么不std::string首先使用?
std::string sss( str );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |