gpt4 book ai didi

c++ - 带有释放器的 string_view

转载 作者:行者123 更新时间:2023-11-27 22:43:02 25 4
gpt4 key购买 nike

我正在尝试尽可能多地使用 std::string_view 来包装 C 字符串,但是,每当我正在包装的 C 字符串被动态分配时,我都依赖于此图案:

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

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

有没有更好的方法?还是我需要编写自己的 string_view 包装器?

最佳答案

string_view 没有任何任何 所有权语义。如果您想拥有它,请使用智能指针。

std::unique_ptr<char, decltype(&std::free)> cs(get_c_string(), std::free);

或者:

template <auto Deleter>
struct FuncDeleter {
template <class P>
void operator()(P* p) const { Deleter(p); }
};

std::unique_ptr<char, FuncDeleter<std::free>> cs(get_c_string());

关于c++ - 带有释放器的 string_view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46550736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com