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

时间:2019-04-02 13:22:27

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

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

此刻我正在使用:

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

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

2 个答案:

答案 0 :(得分:2)

一种方法:

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::lengthstd::strlen)。

答案 1 :(得分:1)

或者您可以通过提供 BOOST_BEAST_USE_STD_STRING_VIEW 的定义将使用它自己的 string_view 的野兽切换到 std::string_view