Freigeben über


basic_istream_view Klasse (C++-Standardbibliothek)

Eine Ansicht der aufeinander folgenden Elemente aus einem Eingabedatenstrom.

Syntax

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

Vorlagenparameter

CharT
Der Zeichentyp des Datenstroms.

Traits
Optional. Enthält Details zum Zeichentyp des Datenstroms zum Vergleichen von Zeichen, bestimmen die Länge einer Zeichenfolge aus diesem Zeichentyp usw. Eine Beispieleigenschaft ist char_traits<wchar_t>. Wenn nicht angegeben, wird standardmäßig auf char_traits<CharT>.

Val
Der Typ der zu extrahierenden Elemente. Beispiel: double"1.1 2.2 3.3"

stream_extractable bezieht sich auf die Anforderung (Konzept), die der Typ Val mithilfe der operator>> Funktion aus einem Datenstrom extrahiert werden kann. Es entspricht:

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

Eigenschaften der Ansicht

Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen

Merkmal Beschreibung
Range Adaptor istream
Zugrunde liegender Bereich Keine
Elementtyp Identisch mit Val
Iteratorkategorie anzeigen input_range
Größer eingestellt No
Ist const-iterierbar No
Allgemeiner Bereich No
Geliehener Bereich No

Spezialisierungen:istream_view und wistream_view

Komfortaliasvorlagen werden für char und wchar_t Datenströme wie folgt bereitgestellt:

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) Liest Elemente aus einem Eingabedatenstrom, der char aus Zeichen besteht.
2) Liest Elemente aus einem Eingabedatenstrom, der wchar_t aus Zeichen besteht.

Für 1) und 2) Val bezieht sich auf den Typ der zu extrahierenden Elemente. Beispielsweise Val wird double ein Datenstrom von: "1.1 2.2 3.3"

Member

Memberfunktionen Beschreibung
Konstruktoren C++20 Erstellen Sie ein basic_istream_view.
beginC++20 Lesen Sie den ersten Wert, und rufen Sie einen Iterator für die Ansicht ab.
endC++20 Gibt std::default_sentinel zurück.

Keine Memberfunktionen werden von view_interface.

Anforderungen

Header: <ranges> (seit C++20)

Namespace:std::ranges

Compileroption: /std:c++20 oder höher ist erforderlich.

Konstruktoren

Erstellen einer Instanz eines basic_istream_view.

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

Parameter

stream
Der Datenstrom, aus dem gelesen wird.

Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.

Rückgabewert

Eine basic_istream_view-Instanz. Der basic_istream_view interne Datenstromzeiger wird initialisiert in addressof(stream).

Hinweise

Die beste Methode zum Erstellen eines Steuerelements basic_istream_view ist die Verwendung des views::istream Bereichsadapters. Bereichsadapter sind die beabsichtigte Möglichkeit zum Erstellen von Ansichtsklassen. Die Ansichtstypen werden für den Fall verfügbar gemacht, dass Sie ihren eigenen benutzerdefinierten Ansichtstyp erstellen möchten.

Beispiel: basic_istream_view, , istream_viewund 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

Lesen Sie den ersten Wert, und rufen Sie einen Iterator zur Ansicht ab.

constexpr auto begin();

Parameter

Keine

Rückgabewert

Ein Iterator, der auf das erste Element in der basic_istream_view.

end

Rufen Sie den Sentinel am Ende der Ansicht ab.

constexpr std::default_sentinel_t end() const noexcept;

Parameter

Keine

Rückgabewert

default_sentinel_t

Siehe auch

<ranges>
Anzeigen von Klassen