我正在使用使用boost::string_view
的Boost库。但是,我想在代码中使用std::string_view
。
问::在这两者之间进行转换的最佳方法是什么?
此刻我正在使用:
void foo(std::string_view sv) {
# ...
}
void foo(boost::string_view bsv) {
foo(std::string(bsv));
}
但这会创建不必要的字符串。
答案 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::length
(std::strlen
)。
答案 1 :(得分:1)
或者您可以通过提供 BOOST_BEAST_USE_STD_STRING_VIEW
的定义将使用它自己的 string_view 的野兽切换到 std::string_view