From cppreference.com
constexprbasic_string_viewsubstr(size_typepos=0,size_typecount=npos)const;(since C++17)Returns a view of the substring [pos, pos+rlen), where rlen 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+rlen).
Exceptions
if pos>size().
Complexity
Constant.
Example
Run this code
#include<cstddef>#include<iostream>#include<stdexcept>#include<string_view>intmain(){typedefstd::size_tcount_t,pos_t;constexprstd::string_viewdata{"ABCDEF"};std::cout<<data.substr()<<'\n';// ABCDEF, i.e. data[0, 5] that is [0, 6)std::cout<<data.substr(pos_t(1))<<'\n';// BCDEF, i.e. [1, 6)std::cout<<data.substr(pos_t(2),count_t(3))<<'\n';// CDE, i.e. [2, 2 + 3)std::cout<<data.substr(pos_t(4),count_t(42))<<'\n';// EF, i.e. [4, 6)try{[[maybe_unused]]autosub=data.substr(pos_t(666),count_t(1));// throws: pos > size()}catch(std::out_of_rangeconst&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
(C++26)
returns a sub-view
(public member function)
copies characters
(public member function)
find characters in the view
(public member function)
returns a substring
(public member function of std::basic_string<CharT,Traits,Allocator>)