使用 std::string_view 的子字符串控制台输出 [关闭]

Posted

技术标签:

【中文标题】使用 std::string_view 的子字符串控制台输出 [关闭]【英文标题】:Substring console output using std::string_view [closed] 【发布时间】:2020-06-15 11:58:55 【问题描述】:

是否可以使用std::string_viewstd::string 的控制台输出进行子串化?

例如:

std::string toolong "this is a string too long for me";  
std::string_view(toolong);
// do something...

预期的控制台输出:this is a string

【问题讨论】:

喜欢this? 请具体解释“太长”是如何定义的。此外,您是否只想格式化输出,或者您实际上需要 string_view(可能还有其他仅显示方式)。 【参考方案1】:

是的,它被称为 substring-ing。

std::string toolong "this is a string too long for me";  
std::string_view view(toolong);

std::cout << view.substr(0, 16);

或者,您也可以使用remove_prefix()remove_suffix() 方法。

例子:

view.remove_suffix(16); // view is now "this is a string"

view.remove_prefix(5); // view is now -> "is a string"

如果您想就地执行此操作而不创建变量string_view,请使用substr()

std::string toolong "this is a string too long for me";  
std::cout << std::string_view (toolong).substr(0, 16);

【讨论】:

以上是关于使用 std::string_view 的子字符串控制台输出 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将 std::string_view 与 api 一起使用,期望以 null 终止的字符串

将 std::string_view 与 api 一起使用,期望以 null 终止的字符串

为啥 std::string_view 比 const char* 快?

删除 std::string_view 的最后一个字符

Boost.Container flat_map 和 std::string_view

std::string_view 编译时散列