Przejdź do głównej zawartości

std::string_view data() method

// 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

uwaga

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.

std::string_view data() method

// 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

uwaga

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.