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 . |
begin C++20 |
Lesen Sie den ersten Wert, und rufen Sie einen Iterator für die Ansicht ab. |
end C++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_view
und 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