unique_ptr<char[]>
将 a 移动到 a的最佳成语是unique_ptr<const char[]>
什么?
用例:假设您在某个缓冲区中创建了一个 C 字符串。为了确保在发生异常时进行适当的清理,该缓冲区可以是使用unique_ptr
. 构造字符串后,您可能希望将其移动到某个类成员,该成员被声明unique_ptr<const char[]>
为避免进一步修改字符串。
这是我迄今为止最好的:
std::unique_ptr<const char[]> res;
std::unique_ptr<char[]> buf(new char[4]);
buf[0] = 'f';
buf[1] = buf[2] = 'o';
buf[3] = '\0';
res = std::unique_ptr<const char[]>(const_cast<const char*>(buf.release()));
简单地移动似乎不起作用,可能是由于删除器类型不同。正如` unique_ptr < T const [] >` 应该char
接受`T*` 构造函数参数吗?const char
有没有更好的成语来实现我上面概述的内容?我的代码看起来很笨拙,而且考虑到这个概念一开始听起来多么简单,我的代码相当冗长。