Namespaces
Variants

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

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

基礎となる文字配列へのポインタを返します。このポインタは範囲 [ data ( ) , data ( ) + size ( ) ) が有効であり、その中の値がビューの値に対応するようになっています。

目次

パラメータ

(なし)

戻り値

基となる文字配列へのポインタ。

計算量

定数。

注記

std::basic_string::data() や文字列リテラルとは異なり、 std::basic_string_view::data() は必ずしもnull終端されていないバッファへのポインタを返します。例えば部分文字列ビュー( remove_suffix からのものなど)が該当します。したがって、 data() を単なる const CharT * を受け取りnull終端文字列を期待するルーチンに渡すことは、一般的に誤りです。

#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: 基となる文字配列はnull終端されている
    char array[3] = {'B', 'a', 'r'};
    std::string_view array_v(array, sizeof array);
    // std::cout << std::strlen(array_v.data()) << '\n';
    // エラー: 基となる文字配列はnull終端されていない
    std::string str(array_v.data(), array_v.size()); // OK
    std::cout << std::strlen(str.data()) << '\n';
    // OK: std::stringの基となる文字配列は常にnull終端されている
}

出力:

5
3

関連項目

最初の文字にアクセスする
(public member function)
最後の文字にアクセスする
(public member function)
文字列の最初の文字へのポインタを返す
( std::basic_string<CharT,Traits,Allocator> のpublic member function)