std::basic_string_view<CharT,Traits>::remove_prefix
From cppreference.com
 
 
 < cpp | string | basic string view 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
std::basic_string_view 
 
 
 
 
 
 
 
(C++20)
(C++20)
(C++23)
basic_string_view::remove_prefix
 Constants
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20)
 Deduction guides (C++20)
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.
Contents
[edit] Parameters
 n
 -
 number of characters to remove from the start of the view
[edit] Complexity
Constant.
[edit] Example
Run this code
#include <algorithm> #include <iostream> #include <string_view> 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.