如何将 boost::string_view 转换为标准::string_view

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

本文关键字:view string 标准 转换 boost      更新时间:2023-10-16

我正在使用使用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(。

或者

你可以使用它自己的string_view将 beast 切换到 std::string_view,通过提供BOOST_BEAST_USE_STD_STRING_VIEW的定义