◐ Shell
clean mode source ↗

std::basic_string_view<CharT,Traits>::basic_string_view - cppreference.com

提供: cppreference.com

<tbody> </tbody>

constexpr basic_string_view() noexcept;

(1) (C++17以上)

constexpr basic_string_view(const basic_string_view& other) noexcept = default;

(2) (C++17以上)

constexpr basic_string_view(const CharT* s, size_type count);

(3) (C++17以上)

constexpr basic_string_view(const CharT* s);

(4) (C++17以上)

template<class It, class End> constexpr basic_string_view(It first, End last);

(5) (C++20以上)

1) デフォルトコンストラクタ。 空の basic_string_view を構築します。 構築後、 data()nullptr と等しくなり、 size()0 と等しくなります。

2) コピーコンストラクタ。 other と同じ内容のビューを構築します。 構築後、 data()other.data() と等しくなり、 size()other.size() と等しくなります。

3) s の指す要素から始まる文字配列の最初の count 個の文字のビューを構築します。 s はヌル文字を含むことができます。 [s, s+count) が有効な範囲でない場合 (たとえコンストラクタがこの範囲のいずれの要素にもアクセスしないとしても)、動作は未定義です。 構築後、 data()s と等しくなり、 size()count と等しくなります。

4) s の指すヌル終端文字列のビューを構築します。 終端のヌル文字は含まれません。 ビューの長さは Traits::length(s) によって行われたかのように決定されます。 [s, s+Traits::length(s)) が有効な範囲でない場合、動作は未定義です。 構築後、 data()s と等しくなり、 size()Traits::length(s) と等しくなります。

5) 範囲 [first, last) に対する basic_string_view を構築します。 [first, last) が有効な範囲でない場合、 It が実際には

contiguous_iterator

をモデル化しない場合、または End が実際には It に対する

sized_sentinel_for

をモデル化しない場合、動作は未定義です。 構築後、 data()std::to_address(first) と等しく、 size()last - first と等しくなります。

このオーバーロードは、

  • Itcontiguous_iterator を満たし、
  • EndIt に対する sized_sentinel_for を満たし、
  • std::iter_value_t<It>CharT が同じ型であり、
  • Endstd::size_t に変換可能でない

場合にのみ、オーバーロード解決に参加します。

引数

other - ビューを初期化する別のビュー
s - ビューを初期化する文字配列または C の文字列を指すポインタ
count - ビューに含める文字数
first - シーケンスの最初の文字を指すイテレータ
last - シーケンスの最後の文字の次のイテレータまたは別の番兵

計算量

1-3,5) 一定。

4) s の長さに比例。

#include <iostream>
#include <string>
#include <string_view>
int main()
{
    std::wstring_view wcstr_v = L"xyzzy";

    char array[3] = {'B', 'a', 'r'};
    std::string_view array_v(array, std::size(array));

    std::string cppstr = "Foo";
    std::string_view cppstr_v(cppstr); 

    std::cout << cppstr_v << '\n'
              << array_v << '\n'
              << wcstr_v.size() << '\n';
}

出力:

関連項目