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_view
と wistream_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 を構築します。 |
begin C++20 |
最初の値を読み取り、ビューの反復子を取得します。 |
end C++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_view
、 istream_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