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.