Sdílet prostřednictvím


basic_istream_view class (standardní knihovna jazyka C++)

Zobrazení po sobě jdoucích prvků ze vstupního datového proudu

Syntaxe

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>>;

Parametry šablony

CharT
Typ znaku datového proudu.

Traits
Nepovinné. Poskytuje podrobnosti o typu znaku datového proudu, pokud jde o porovnávání znaků, určení délky řetězce tvořeného tímto typem znaku atd. Příkladem vlastnosti je char_traits<wchar_t>. Pokud není zadáno, je výchozí hodnota char_traits<CharT>.

Val
Typ prvků, které se mají extrahovat. double Například při datovém proudu:"1.1 2.2 3.3"

stream_extractable odkazuje na požadavek (koncept), který Val lze extrahovat z datového proudu pomocí operator>> funkce. Je to ekvivalentní:

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

Zobrazení charakteristik

Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.

Charakteristika Popis
Adaptér rozsahu istream
Podkladová oblast Nic
Typ elementu Stejné jako Val
Zobrazit kategorii iterátoru input_range
Tříděný No
Je const-iterable No
Společný rozsah No
Zapůjčený rozsah No

Specializace:istream_view a wistream_view

Šablony aliasů pro pohodlí jsou k dispozici pro char streamy wchar_t , a to následujícím způsobem:

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) Čte prvky ze vstupního datového proudu složeného ze char znaků.
2) Čte prvky ze vstupního datového proudu složeného ze wchar_t znaků.

Pro 1) a 2) Val odkazuje na typ prvků, které se mají extrahovat. Například Val je double uveden datový proud: "1.1 2.2 3.3"

Členové

Členské funkce Popis
KonstruktoryC++20 Vytvoření .basic_istream_view
beginC++20 Přečtěte si první hodnotu a získejte iterátor pro zobrazení.
endC++20 Návraty std::default_sentinel

Žádné členské funkce nejsou zděděné z view_interface.

Požadavky

Hlavička: <ranges> (od C++20)

Obor názvů: std::ranges

Je vyžadována možnost kompilátoru: /std:c++20 nebo novější.

Konstruktory

Vytvoření instance objektu basic_istream_view.

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

Parametry

stream
Datový proud, ze který se má číst.

Informace o typu parametru šablony naleznete v tématu Parametry šablony.

Vrácená hodnota

Instance basic_istream_view . Interní ukazatel datového basic_istream_view proudu je inicializován na addressof(stream).

Poznámky

Nejlepší způsob, jak vytvořit, basic_istream_view je použití adaptéru rozsahu views::istream . Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení jsou vystaveny pro případ, že chcete vytvořit vlastní typ zobrazení.

Příklad: basic_istream_view, istream_viewa 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

Přečtěte si první hodnotu a získejte iterátor do zobrazení.

constexpr auto begin();

Parametry

Žádná

Vrácená hodnota

Iterátor ukazující na první prvek v objektu basic_istream_view.

end

Získejte sentinel na konci zobrazení.

constexpr std::default_sentinel_t end() const noexcept;

Parametry

Žádná

Vrácená hodnota

default_sentinel_t

Viz také

<ranges>
Zobrazit třídy