constexpr basic_string_view() noexcept;
(1) (since C++17)constexpr basic_string_view( const basic_string_view& other ) noexcept = default;
(2) (since C++17)constexpr basic_string_view( const CharT* s, size_type count );
(3) (since C++17)constexpr basic_string_view( const CharT* s );
(4) (since C++17)template< class It, class End >
constexpr basic_string_view( It first, End last );
template< class R >
constexpr explicit basic_string_view( R&& r );
Default constructor. Constructs an empty
std::basic_string_view
. After construction,
data()is equal to
nullptr, and
size()is equal to
â0â.
2)Copy constructor. Constructs a view of the same content as
other. After construction,
data()is equal to
other.data(), and
size()is equal to
other.size().
3)Constructs a view of the first
countcharacters of the character array starting with the element pointed by
s.
scan contain null characters. The behavior is undefined if
[
s,
s + count)
is not a valid range (even though the constructor may not access any of the elements of this range). After construction,
data()is equal to
s, and
size()is equal to
count.
4)Constructs a view of the null-terminated character string pointed to by
s, not including the terminating null character. The length of the view is determined as if by
Traits::length(s). The behavior is undefined if
[
s,
s + Traits::length(s))
is not a valid range. After construction,
data()is equal to
s, and
size()is equal to
Traits::length(s).
7) std::basic_string_view
cannot be constructed from nullptr.
1-3,5,6) Constant.
4) Linear in length of s.
[edit] Example#include <array> #include <iomanip> #include <iostream> #include <string> #include <string_view> int main() { std::string cppstr = "Foo"; std::string_view cppstr_v(cppstr); // overload (2), after // std::string::operator string_view std::cout << "1) cppstr_v: " << std::quoted(cppstr_v) << '\n'; char array[3] = {'B', 'a', 'r'}; std::string_view array_v(array, std::size(array)); // overload (3) std::cout << "2) array_v: " << std::quoted(array_v) << '\n'; const char* one_0_two = "One\0Two"; std::string_view one_two_v{one_0_two, 7}; // overload (3) std::cout << "3) one_two_v: \""; for (char c : one_two_v) std::cout << (c != '\0' ? c : '?'); std::cout << "\", one_two_v.size(): " << one_two_v.size() << '\n'; std::string_view one_v{one_0_two}; // overload (4) std::cout << "4) one_v: " << std::quoted(one_v) << ", one_v.size(): " << one_v.size() << '\n'; constexpr std::wstring_view wcstr_v = L"xyzzy"; // overload (4) std::cout << "5) wcstr_v.size(): " << wcstr_v.size() << '\n'; std::array ar = {'P', 'u', 'b'}; std::string_view ar_v(ar.begin(), ar.end()); // overload (5), C++20 std::cout << "6) ar_v: " << std::quoted(ar_v) << '\n'; // std::string_view ar_v2{ar}; // overload (6), OK in C++23 // std::cout << "ar_v2: " << std::quoted(ar_v2) << '\n'; // ar_v2: "Pub" [[maybe_unused]] auto zero = [] { /* ... */ return nullptr; }; // std::string_view s{zero()}; // overload (7), won't compile since C++23 }
Output:
1) cppstr_v: "Foo" 2) array_v: "Bar" 3) one_two_v: "One?Two", one_two_v.size(): 7 4) one_v: "One", one_v.size(): 3 5) wcstr_v.size(): 5 6) ar_v: "Pub"[edit] See also assigns a view
basic_string
std::basic_string<CharT,Traits,Allocator>
) [edit]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4