我尽可能地使用std::string_view
来包装C字符串,但是,每当我正在包装的C字符串被动态分配时,我依赖于这种模式:
char *cs = get_c_string();
std::string s(cs);
free(cs);
这是浪费时间,因为它涉及1次分配,1次复制和1次释放。
有没有办法更好地做到这一点?或者我是否需要编写自己的string_view
包装器?
答案 0 :(得分:4)
<body>
<h1>…</h1>
<div class="sidebar">
<nav><!-- site-wide navigation --></nav>
<footer><!-- site-wide footer --></footer>
</div>
</body>
没有任何所有权语义。如果您想拥有它,请使用智能指针。
string_view
或者:
std::unique_ptr<char, decltype(&std::free)> cs(get_c_string(), std::free);