【发布时间】:2021-05-21 10:35:40
【问题描述】:
截至 C++20 string_view 有 remove_prefix 但它是“错误的”(对我的用例来说是错误的)事情。
它以字符数作为参数,而不是前缀(类似字符串的东西)。
我有 this 代码,但我想知道是否有更好的方法来做我想做的事情(请注意,我的代码关心是否删除了前缀,所以我返回布尔值):
static bool Consume(std::string_view& view, const std::string_view prefix)
{
if (view.starts_with(prefix))
{
view.remove_prefix(prefix.size());
return true;
}
return false;
}
注意:我知道我可以返回 optional<string_view> 而不是 bool + out arg,但这是一个不同风格的讨论,我主要关心的是不存在之类的东西
bool /*prefix removed*/string_view::remove_prefix(string_view prefix);
注意2:标记此 C++17 是因为那是 string_view“到达”的时候,我可以使用任何 C++20 替代品。
【问题讨论】:
-
这对我来说似乎很不错。你不喜欢什么?你想改进什么?我可能只是将函数名称更改为
remove_if_prefixed或类似的名称。 -
@AyxanHaqverdili 也许有一些 STL 算法或其他一些我没有想到的成员函数......
标签: c++ c++17 string-view