constexpr basic_string_view(); | (1) | (since C++17) |
constexpr basic_string_view(const basic_string_view& other) = 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) |
basic_string_view
.other
.count
characters of the character array starting with the element pointed by s
. s
can 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)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 (even though the constructor may not access any of the elements of this range)other | - | another view to initialize the view with |
s | - | pointer to a character array or a C string to initialize the view with |
count | - | number of characters to include in the view |
noexcept
specification: noexcept
(1-3) constant.
(4) linear in length of s
.
Because std::char_traits::length
is not constexpr
(pending LWG 2232), the overload (4) cannot be used to initialize a constexpr std::string_view
(or any other basic_string_view with default traits):
constexpr std::string_view sv{"abc"}; // error constexpr std::string_view sv{"abc", 3}; // OK
#include <iostream> #include <string_view> int main() { std::wstring_view wcstr_v = L"xyzzy"; char array[3] = {'B', 'a', 'r'}; std::string_view array_v(array, sizeof array); std::string cppstr = "Foo"; std::string_view cppstr_v(&cppstr[0], cppstr.size()); std::cout << cppstr_v << '\n' << array_v << '\n' << wcstr_v.size() << '\n'; }
Output:
Foo Bar 5
assigns a view (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view