# std::basic_string_view::basic_string_view

 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)
1) Default constructor. Constructs an empty 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 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). 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).

## Contents

### Parameters

 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

### Complexity

1-3) constant
4) linear in length of s

### Example

#include <iostream>
#include <string>
#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