我有一个 char* p
,它指向一个以 \0
结尾的字符串。如何以异常安全的方式从中创建 C++ string
?
这是一个不安全的版本:
string foo()
{
char *p = get_string();
string str( p );
free( p );
return str;
}
一个明显的解决方案是 try-catch - 有更简单的方法吗?
最佳答案
您可以使用 C++11 中的 shared_ptr
或 Boost :
string
foo()
{
shared_ptr<char> p(get_string(), &free);
string str(p.get());
return str;
}
这使用了 shared_ptr
的一个非常特殊的功能,这在 auto_ptr
或其他任何东西中都不可用,即指定自定义删除器的能力;在本例中,我使用 free
作为删除器。
关于c++ - 以安全的方式从 char* 创建 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/246445/