std::basic_string_view::substr(3)

NAME
std::basic_string_view::substr - std::basic_string_view::substr

Synopsis
   constexpr basic_string_view substr( size_type pos = 0, (since C++17)
   size_type count = npos ) const;
   Returns a view of the substring [pos, pos + rcount), where rcount is the smaller of
   count and size() - pos.

Parameters
   pos - position of the first character
   count - requested length

Return value
   View of the substring [pos, pos + rcount).

Exceptions
   std::out_of_range if pos > size()

Complexity
   Constant.

Example
// Run this code
 #include <cstddef>
 #include <iostream>
 #include <stdexcept>
 #include <string_view>
 int main()
 {
     typedef std::size_t count_t, pos_t;
     constexpr std::string_view data{"ABCDEF"};
     std::cout << data.substr() << '\n'; // ABCDEF
     std::cout << data.substr(pos_t(1)) << '\n'; // BCDEF
     std::cout << data.substr(pos_t(2), count_t(3)) << '\n'; // CDE
     std::cout << data.substr(pos_t(4), count_t(42)) << '\n'; // EF
         // count -> 2 == size() - pos == 6 - 4
     try {
         data.substr(pos_t(666), count_t(1)); // throws: pos > size()
     }
     catch(std::out_of_range const& ex) {
         std::cout << ex.what() << '\n';
     }
 }

Possible output:
 ABCDEF
 BCDEF
 CDE
 EF
 basic_string_view::substr: __pos (which is 666) > __size (which is 6)

See also
   copy copies characters
   (C++17) (public member function)
   find find characters in the view
   (C++17) (public member function)
   substr returns a substring
           (public member function of std::basic_string<CharT,Traits,Allocator>)