std::basic_..._view::data(3)

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

✨ NAME ✨

std::basic_string_view::data - std::basic_string_view::data

okay so welcome to the std::basic_..._view::data(3) page from the C++ Standard Libary (yes, that spelling, we keep it πŸ’…). It's giving pointer-to-the-underlying-character-array energy, and we're obsessed. no cap.

πŸ¦‹ Synopsis πŸ¦‹

Here's the signature, fresh out of the standard-lib oven:

constexpr const_pointer data() const noexcept;  (since C++17)

It returns a pointer to the underlying character array. The pointer is such that the range [data(), data() + size()) is valid and the values in it correspond to the values of the view. ✨

πŸŽ€ Parameters πŸŽ€

(none) β€” not a single parameter, bestie πŸ‘‘

🌸 Return value 🌸

A pointer to the underlying character array. That's the whole vibe 🫢

πŸ’« Complexity πŸ’«

Constant. periodt.

🧚 Notes 🧚

Big caution flag, bestie 🚩: unlike std::basic_string::data() and string literals, std::basic_string_view::data() returns a pointer to a buffer that is not necessarily null-terminated, for example a substring view (e.g. from remove_suffix). Therefore, it is typically a mistake to pass data() to a routine that takes just a const CharT* and expects a null-terminated string. Like, do not send it to that function, it will not slay πŸ˜­πŸ’€.

πŸ“ Example πŸ“

// Run this code

#include <cstring>
#include <cwchar>
#include <iostream>
#include <string>
#include <string_view>

int main()
{
    std::wstring_view wcstr_v = L"xyzzy";
    std::cout << std::wcslen(wcstr_v.data()) << '\n';
    // OK: the underlying character array is null-terminated

    char array[3] = {'B', 'a', 'r'};
    std::string_view array_v(array, sizeof array);
    // std::cout << std::strlen(array_v.data()) << '\n';
    // error: the underlying character array is not null-terminated

    std::string str(array_v.data(), array_v.size()); // OK
    std::cout << std::strlen(str.data()) << '\n';
    // OK: the underlying character array of a std::string is always
       null-terminated
}

🌈 Output 🌈

5
3

πŸ‘‘ See also πŸ‘‘

  • front β€” accesses the first character (public member function)
  • back β€” accesses the last character (public member function)
  • data β€” returns a pointer to the first character of a string (public member function of std::basic_string<CharT,Traits,Allocator>)

mwah πŸ’‹ this page says it came from http://cppreference.com and it's dated 2024.06.10. bye bestie, go check that null terminator πŸ¦‹πŸ’–

πŸ“¦ where this page comes from