std::string_view data() method
- since C++17
// Const version only
constexpr const_pointer data() const noexcept;
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)
Return value
A pointer to the underlying character storage.
Complexity
Constant - O(1).
Notes
caution
Unlike std::string::data()
and string literals, std::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.
Example
Main.cpp
#include <iostream>
#include <cstring>
#include <cwchar>
#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
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.
Hover to see the original license.