std::basic_string_view<CharT,Traits>::remove_prefix - cppreference.com (original) (raw)

| constexpr void remove_prefix( size_type n ); | | (since C++17) | | ---------------------------------------------- | | ------------- |

Moves the start of the view forward by n characters.

If n > size() is true, the behavior is undefined. (until C++26)
If n > size() is true: If the implementation is hardened, a contract violation occurs. Moreover, if the contract-violation handler returns under “observe” evaluation semantic, the behavior is undefined. If the implementation is not hardened, the behavior is undefined. (since C++26)

[edit] Parameters

n - number of characters to remove from the start of the view

[edit] Complexity

Constant.

[edit] Example

#include #include #include   using namespace std::literals;   [[nodiscard("a pure function")]] constexpr std::size_t count_substrings(std::string_view hive, const std::string_view bee) { if (hive.empty() || bee.empty()) return 0U;   std::size_t buzz{}; while (bee.size() <= hive.size()) { const auto pos = hive.find(bee); if (pos == hive.npos) break; ++buzz; hive.remove_prefix(pos + bee.size()); } return buzz; }   int main() { std::string str = " trim me"; std::string_view v = str; v.remove_prefix(std::min(v.find_first_not_of(" "), v.size())); std::cout << "String: '" << str << "'\n" << "View  : '" << v << "'\n";   constexpr auto hive{"bee buzz bee buzz bee"}; std::cout << "There are " << count_substrings(hive, "bee") << " bees in this hive.\n"; }

Output:

String: ' trim me' View  : 'trim me' There are 3 bees in this hive.

[edit] See also