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

Posted

技术标签:

【中文标题】如何将 boost::string_view 转换为 std::string_view?【英文标题】:How to convert boost::string_view to std::string_view? 【发布时间】:2019-04-02 13:22:27 【问题描述】:

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

目前我正在使用:

void foo(std::string_view sv) 
# ...

void foo(boost::string_view bsv) 
  foo(std::string(bsv));

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

【问题讨论】:

【参考方案1】:

一种方式:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于如何将 boost::string_view 转换为 std::string_view?的主要内容,如果未能解决你的问题,请参考以下文章

string_view 指向另一个字符串

如何将CString转换成wstring

如何将CSV格式转换成JSON格式

如何将CString转换成wstring

如何将DataGridView转换为DataTable?

如何将 UTC 时间转换为本地时间