如何将boost::string_view转换成std::string_view?

How to convert boost::string_view to std::string_view?

我正在使用一个使用 boost::string_view 的增强库。但是,我想在我的代码中使用 std::string_view
问:在这两者之间进行转换的最佳方法是什么?

目前我正在使用:

void foo(std::string_view sv) {
# ...
}
void foo(boost::string_view bsv) {
  foo(std::string(bsv));
}

但这会创建一个不必要的字符串。

一种方式:

void foo(std::string_view sv);

inline void foo(boost::string_view bsv) {
  foo(std::string_view(bsv.data(), bsv.size()));
}

确保将长度传递给 std::string_view 否则它会不必要地调用 Traits::length (std::strlen)。

或者您可以通过提供 BOOST_BEAST_USE_STD_STRING_VIEW

的定义,将使用它自己的 string_view 的 beast 切换为 std::string_view