Namespaces
Variants

std::basic_string_view<CharT,Traits>:: data

From cppreference.net
constexpr const_pointer data ( ) const noexcept ;
(seit C++17)

Gibt einen Zeiger auf das zugrundeliegende Zeichenarray zurück. Der Zeiger ist so beschaffen, dass der Bereich [ data ( ) , data ( ) + size ( ) ) gültig ist und die darin enthaltenen Werte den Werten der Ansicht entsprechen.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

Ein Zeiger auf das zugrundeliegende Zeichenarray.

Komplexität

Konstante.

Hinweise

Im Gegensatz zu std::basic_string::data() und String-Literalen gibt std::basic_string_view::data() einen Zeiger auf einen Puffer zurück, der nicht notwendigerweise nullterminiert ist, beispielsweise bei einer Teilstring-Ansicht (z.B. von remove_suffix ). Daher ist es typischerweise ein Fehler, data() an eine Routine zu übergeben, die lediglich einen const CharT * erwartet und eine nullterminierte Zeichenkette voraussetzt.

Beispiel

#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: das zugrundeliegende Zeichenarray ist nullterminiert
    char array[3] = {'B', 'a', 'r'};
    std::string_view array_v(array, sizeof array);
    // std::cout << std::strlen(array_v.data()) << '\n';
    // Fehler: das zugrundeliegende Zeichenarray ist nicht nullterminiert
    std::string str(array_v.data(), array_v.size()); // OK
    std::cout << std::strlen(str.data()) << '\n';
    // OK: das zugrundeliegende Zeichenarray eines std::string ist immer nullterminiert
}

Ausgabe:

5
3

Siehe auch

greift auf das erste Zeichen zu
(öffentliche Elementfunktion)
greift auf das letzte Zeichen zu
(öffentliche Elementfunktion)
gibt einen Zeiger auf das erste Zeichen einer Zeichenkette zurück
(öffentliche Elementfunktion von std::basic_string<CharT,Traits,Allocator> )