我有一个char* p
,指向一个\0
终止字符串.如何string
以异常安全的方式从中创建C++ ?
这是一个不安全的版本:
string foo() { char *p = get_string(); string str( p ); free( p ); return str; }
一个明显的解决方案是尝试捕获 - 任何更简单的方法?
您可以使用shared_ptr
从C++ 11或升压:
string foo() { shared_ptrp(get_string(), &free); string str(p.get()); return str; }
它使用了非常具体的功能shared_ptr
不在可用的auto_ptr
或其他任何东西,即指定一个定制删除的能力; 在这种情况下,我free
用作删除器.