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

Prz*_*ski 4 c++ boost string-view c++17

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

目前我正在使用:

void foo(std::string_view sv) {
# ...
}
void foo(boost::string_view bsv) {
  foo(std::string(bsv));
}
Run Code Online (Sandbox Code Playgroud)

但这会产生不必要的字符串。

Max*_*kin 9

单程:

void foo(std::string_view sv);

inline void foo(boost::string_view bsv) {
  foo(std::string_view(bsv.data(), bsv.size()));
}
Run Code Online (Sandbox Code Playgroud)

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


小智 5

或者,您可以通过提供以下定义来将野兽使用它自己的 string_view 切换为 std::string_viewBOOST_BEAST_USE_STD_STRING_VIEW