std::experi..._string_view(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… NAME πŸ’…

okay so this page is std::experi..._string_view(3) from the C++ Standard Libary manual (their spelling, not mine, bestie πŸ’…).

The NAME is std::experimental::basic_string_view::basic_string_view β€” and yes, that's std::experimental::basic_string_view::basic_string_view again, because this is literally the constructor page for std::experimental::basic_string_view. No cap. ✨


✨ Synopsis ✨

Here's the whole overload lineup, bestie:

constexpr basic_string_view() noexcept;                (1) (library fundamentals TS)
constexpr basic_string_view( const basic_string_view& other ) noexcept = default; (2) (library fundamentals TS)
template<class Allocator>
basic_string_view( const std::basic_string<CharT, Traits, Allocator>& str ) noexcept; (3) (library fundamentals TS)
constexpr basic_string_view( const CharT* s, size_type count ); (4) (library fundamentals TS)
constexpr basic_string_view( const CharT* s );         (5) (library fundamentals TS)
  1. Default constructor. Constructs an empty basic_string_view.
  2. Copy constructor. Constructs a view of the same content as other.
  3. Constructs a view of the first str.size() characters of the character array starting with the element pointed by str.data().
  4. 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). ⚠️
  5. 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 (even though the constructor may not access any of the elements of this range). ⚠️
bestie, those undefined-behavior notes are not a vibe check you wanna fail 😭

πŸŽ€ Parameters πŸŽ€

  • other β€” another view to initialize the view with
  • str β€” a C++ string object to initialize 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

🫢 Exceptions 🫢

4,5) Throws nothing. That's it. No drama, no surprise, just peace 😌✨


πŸ”₯ Complexity πŸ”₯

  • 1-4) Constant.
  • 5) Linear in length of s.

🌸 Example 🌸

// Run this code

#include <experimental/string_view>
#include <iostream>

int main()
{
    std::string cppstr = "Foo";
    char array[3] = {'B', 'a', 'r'};

    std::experimental::string_view cppstr_v(cppstr);
    std::experimental::string_view array_v(array, sizeof array);

    std::experimental::wstring_view wcstr_v = L"xyzzy";

    std::cout << cppstr_v << '\n'
              << array_v << '\n'
              << wcstr_v.size() << '\n';
}

πŸ“ Output πŸ“

Foo
Bar
5

πŸ¦‹ See also πŸ¦‹

  • operator= β€” assigns a view (public member function)

🌈 Category 🌈

  • * Noindexed pages

okay that's the whole page, bestie πŸ’– β€” source/version: http://cppreference.com, date: 2024.06.10, page: std::experi..._string_view(3). Mwah! πŸ’…βœ¨

πŸ“¦ where this page comes from