我正在使用一个使用boost::string_view
的boost库。然而,我想在我的代码中使用std::string_view
。
问:在这两者之间转换的最佳方法是什么?
目前我正在使用:
void foo(std::string_view sv) {
# ...
}
void foo(boost::string_view bsv) {
foo(std::string(bsv));
}
但这会创建一个不必要的字符串。
我正在使用一个使用boost::string_view
的boost库。然而,我想在我的代码中使用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
)。
您可以通过提供BOOST_BEAST_USE_STD_STRING_VIEW
的定义,将beast切换到使用它自己的string_view到std::string_view。
BOOST_BEAST_USE_STD_STRING_VIEW
已不再可用: https://www.boost.org/doc/libs/1_83_0/libs/beast/doc/html/beast/release_notes.html - undefined