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

3

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

目前我正在使用:

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

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

2个回答

8

一种方式:

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)。


5

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


自从boost-1.83.0版本以来,BOOST_BEAST_USE_STD_STRING_VIEW已不再可用: https://www.boost.org/doc/libs/1_83_0/libs/beast/doc/html/beast/release_notes.html - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接