次の方法で共有


basic_istream_view クラス (C++ 標準ライブラリ)

入力ストリームからの連続する要素のビュー。

構文

template<movable Val, class CharT, class Traits>
    requires default_initializable<Val> &&
    stream_extractable <Val, CharT, Traits>
class basic_istream_view : public view_interface<basic_istream_view<Val, CharT, Traits>>;

テンプレート パラメーター

CharT
ストリームの文字型。

Traits
省略可能。 文字の比較、その文字型で構成される文字列の長さの決定など、ストリームの文字型に関する詳細を提供します。 特性の例として、 char_traits<wchar_t>があります。 指定しない場合、既定値は char_traits<CharT>

Val
抽出する要素の型。 たとえば、次のストリーム double 与えられます。 "1.1 2.2 3.3"

stream_extractableは、operator>>関数を使用してストリームからVal型を抽出できる要件 (概念) を指します。 これは次の内容に相当します。

template<class Val, class CharT, class Traits>
concept stream_extractable =
  requires(std::basic_istream<CharT,Traits>& is, Val& t) {
    is >> t;
  };

特性の表示

以下の項目の説明については、 View クラスの特性を参照してください。

特徴 説明
範囲アダプター istream
基になる範囲 なし
要素の種類 と同じ Val
反復子カテゴリの表示 input_range
サイズ いいえ
const対応 いいえ
共通範囲 いいえ
借用範囲 いいえ

特殊化:istream_viewwistream_view

便利なエイリアス テンプレートは、次のように、 char ストリームと wchar_t ストリーム用に提供されます。

1) template<class Val>
using istream_view = ranges::basic_istream_view<Val, char>;

2) template<class Val>
using wistream_view = ranges::basic_istream_view<Val, wchar_t>;

1) char 文字で構成される入力ストリームから要素を読み取ります。
2) wchar_t 文字で構成される入力ストリームから要素を読み取ります。

1) および 2) については、 Val 抽出する要素の種類を指します。 たとえば、 Val は次のストリーム double"1.1 2.2 3.3"

メンバー

メンバー関数 説明
コンストラクターC++20 basic_istream_view を構築します。
beginC++20 最初の値を読み取り、ビューの反復子を取得します。
endC++20 std::default_sentinel を返します。

view_interfaceから継承されるメンバー関数はありません。

要件

Header: <ranges> (C++20 以降)

名前空間: std::ranges

コンパイラ オプション: /std:c++20 以降が必要です。

コンストラクター

basic_istream_viewのインスタンスを構築します。

constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);

パラメーター

stream
読み込み元のストリーム。

テンプレート パラメーターの型の詳細については、「 Template パラメーターを参照してください。

戻り値

basic_istream_view のインスタンス。 basic_istream_view内部ストリーム ポインターは、addressof(stream)に初期化されます。

解説

basic_istream_viewを作成する最善の方法は、views::istream範囲アダプターを使用することです。 範囲アダプターは、ビュー クラスを作成するための目的の方法です。 独自のカスタム ビューの種類を作成する場合は、ビューの種類が公開されます。

例: basic_istream_viewistream_view、および wistream_view

// requires /std:c++20, or later
#include <ranges>
#include <iostream>
#include <sstream>

int main()
{
    // range adaptor
    std::istringstream streamOfdoubles{ "1.1 2.2 3.3 4.4 5.5" };
    for (const auto& elem : std::views::istream<double>(streamOfdoubles))
    {
        std::cout << elem << ' '; // 1.1 2.2 3.3 4.4 5.5
    }
    std::cout << '\n';

    // range adaptor - create a wistream_view
    std::wistringstream streamOfInts{ L"1 2 3 4 5" };
    for (const auto& elem : std::views::istream<int>(streamOfInts))
    {
        std::cout << elem << ' '; // 1 2 3 4 5
    }
    std::cout << '\n';

    // istream_view alias
    std::istringstream cpu1{ "8 0 8 0" };
    // equivalent std::ranges::istream_view<int, char>
    for (const auto& elem : std::ranges::istream_view<int>{cpu1})
    {
        std::cout << elem; // 8080
    }
    std::cout << '\n';

    // wistream_view alias
    std::wistringstream cpu2{ L"6 5 0 2" };
    // equivalent std::ranges::istream_view<int, wchar_t>
    for (const auto& elem : std::ranges::wistream_view<int>{cpu2})
    {
        std::cout << elem; // 6502
    }
    std::cout << '\n';

    // specify all template arguments
    std::wistringstream misc(L"S T L");
    std::ranges::basic_istream_view<wchar_t, wchar_t, std::char_traits<wchar_t>> basic{misc};
    for (const auto& elem : basic)
    {
        std::wcout << elem << ' '; // S T L
    }
}
1.1 2.2 3.3 4.4 5.5
1 2 3 4 5
8080
6502
S T L

begin

最初の値を読み取り、ビューを指す反復子を取得します。

constexpr auto begin();

パラメーター

ありません。

戻り値

basic_istream_view 内の最初の要素を指す反復子。

end

ビューの最後にあるセンチネルを取得します。

constexpr std::default_sentinel_t end() const noexcept;

パラメーター

ありません。

戻り値

default_sentinel_t

関連項目

<ranges>
クラスの表示