std::ranges:: views:: istream, std::ranges:: basic_istream_view, std::ranges:: istream_view, std::ranges:: wistream_view
|
Definiert im Header
<ranges>
|
||
|
template
<
std::
movable
Val,
class
CharT,
class
Traits
=
std::
char_traits
<
CharT
>
>
|
(1) | (seit C++20) |
|
Hilfs-Templates
|
||
|
template
<
class
Val
>
using istream_view = ranges :: basic_istream_view < Val, char > ; |
(2) | (seit C++20) |
|
template
<
class
Val
>
using wistream_view = ranges :: basic_istream_view < Val, wchar_t > ; |
(3) | (seit C++20) |
|
Anpassungspunkt-Objekte
|
||
|
namespace
views
{
template
<
class
T
>
|
(4) | (seit C++20) |
|
Hilfs-Konzepte
|
||
|
template
<
class
Val,
class
CharT,
class
Traits
>
concept
/*stream-extractable*/
=
|
(5) | ( nur zur Darstellung* ) |
U
std::
remove_reference_t
<
decltype
(
e
)
>
ist.
U
nicht sowohl öffentlich als auch eindeutig von
std::
basic_istream
<
typename
U
::
char_type
,
typename
U
::
traits_type
>
abgeleitet ist, was zu einem
Substitutionsfehler
führen kann.
Val
aus einem Lvalue vom Typ
std::
basic_istream
<
CharT, Traits
>
extrahiert werden kann.
Der Iteratortyp von
basic_istream_view
ist nur verschiebbar: Er erfüllt nicht die
LegacyIterator
-Anforderungen und funktioniert daher nicht mit prä-C++20-
Algorithmen
.
Inhaltsverzeichnis |
Customization Point Objects
Der Name
views::istream<T>
bezeichnet ein
Customization Point Object
, welches ein konstantes
Function Object
eines
Literal
semiregular
Klassen-Typs ist. Weitere Details finden Sie unter
CustomizationPointObject
.
Datenmitglieder
| Member | Definition |
std::
basic_istream
<
CharT, Traits
>
*
stream_
|
ein Zeiger auf den Eingabestream
( exposition-only member object* ) |
Val
value_
|
der gespeicherte Wert
( exposition-only member object* ) |
Memberfunktionen
erstellt einen
basic_istream_view
(öffentliche Elementfunktion) |
|||
|
gibt einen Iterator zurück
(öffentliche Elementfunktion) |
|||
|
gibt
std::default_sentinel
zurück
(öffentliche Elementfunktion) |
|||
Geerbt von std::ranges::view_interface |
|||
|
(C++23)
|
gibt einen konstanten Iterator zum Anfang des Bereichs zurück
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
||
|
(C++23)
|
gibt einen Sentinel für den konstanten Iterator des Bereichs zurück
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
||
|
Obwohl
|
(bis C++23) |
std::ranges::basic_istream_view:: basic_istream_view
|
constexpr
explicit
basic_istream_view ( std:: basic_istream < CharT, Traits > & stream ) ; |
(seit C++20) | |
Initialisiert
stream_
mit
std::
addressof
(
stream
)
und wertinitialisiert
value_
.
std::ranges::basic_istream_view:: begin
|
constexpr
auto
begin
(
)
;
|
(seit C++20) | |
Entspricht
*
stream_
>>
value_
;
return
iterator
{
*
this
}
;
.
std::ranges::basic_istream_view:: end
|
constexpr
std::
default_sentinel_t
end
(
)
const
noexcept
;
|
(seit C++20) | |
Gibt std:: default_sentinel zurück.
Geschachtelte Klassen
Der Iteratortyp von
basic_istream_view
( Nur zur Darstellung verwendete Memberklasse* ) |
Beispiel
#include <algorithm> #include <iomanip> #include <iostream> #include <iterator> #include <ranges> #include <sstream> #include <string> int main() { auto words = std::istringstream{"today is yesterday’s tomorrow"}; for (const auto& s : std::views::istream<std::string>(words)) std::cout << std::quoted(s, '/') << ' '; std::cout << '\n'; auto floats = std::istringstream{"1.1 2.2\t3.3\v4.4\f55\n66\r7.7 8.8"}; std::ranges::copy ( std::views::istream<float>(floats), std::ostream_iterator<float>{std::cout, ", "} ); std::cout << '\n'; }
Ausgabe:
/today/ /is/ /yesterday’s/ /tomorrow/ 1.1, 2.2, 3.3, 4.4, 55, 66, 7.7, 8.8,
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3568 | C++20 | P2325R3 machte versehentlich den gespeicherten Wert default-initialized | wiederhergestellt zu value-initialization |
| P2325R3 | C++20 |
Standardkonstruktor wurde bereitgestellt da
view
muss
default_initializable
sein
|
entfernt zusammen mit
der Anforderung |
| P2432R1 | C++20 |
ranges::istream_view
war eine Funktionsvorlage
und folgte nicht der Namenskonvention |
zu einer Alias-Vorlage gemacht;
Customization Point Objects hinzugefügt |
Siehe auch
|
Eingabe-Iterator, der aus
std::basic_istream
liest
(Klassentemplate) |