带有解除分配器的string_view

时间:2017-10-03 18:04:07

标签: c++ c++17 string-view

我尽可能地使用std::string_view来包装C字符串,但是,每当我正在包装的C字符串被动态分配时,我依赖于这种模式:

char *cs = get_c_string();
std::string s(cs);
free(cs);

这是浪费时间,因为它涉及1次分配,1次复制和1次释放。

有没有办法更好地做到这一点?或者我是否需要编写自己的string_view包装器?

1 个答案:

答案 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);