0

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

目前我正在使用:

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

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

4

2 回答 2

5

单程:

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

于 2019-04-02T13:26:21.780 回答
1

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

于 2021-03-24T06:50:45.663 回答