std::ranges:: views:: istream, std::ranges:: basic_istream_view, std::ranges:: istream_view, std::ranges:: wistream_view
|
Défini dans l'en-tête
<ranges>
|
||
|
template
<
std::
movable
Val,
class
CharT,
class
Traits
=
std::
char_traits
<
CharT
>
>
|
(1) | (depuis C++20) |
|
Modèles d'aide
|
||
|
template
<
class
Val
>
using istream_view = ranges :: basic_istream_view < Val, char > ; |
(2) | (depuis C++20) |
|
template
<
class
Val
>
using wistream_view = ranges :: basic_istream_view < Val, wchar_t > ; |
(3) | (depuis C++20) |
|
Objets de point de personnalisation
|
||
|
namespace
views
{
template
<
class
T
>
|
(4) | (depuis C++20) |
|
Concepts d'aide
|
||
|
template
<
class
Val,
class
CharT,
class
Traits
>
concept
/*stream-extractable*/
=
|
(5) | ( exposition uniquement* ) |
U
est
std::
remove_reference_t
<
decltype
(
e
)
>
.
U
n'est pas à la fois publiquement et sans ambiguïté dérivé de
std::
basic_istream
<
typename
U
::
char_type
,
typename
U
::
traits_type
>
, ce qui peut entraîner un
échec de substitution
.
Val
peut être extraite d'une lvalue de type
std::
basic_istream
<
CharT, Traits
>
.
Le type d'itérateur de
basic_istream_view
est non copiable : il ne satisfait pas aux
exigences LegacyIterator
, et par conséquent ne fonctionne pas avec les
algorithmes
antérieurs à C++20.
Table des matières |
Objets de point de personnalisation
Le nom
views::istream<T>
désigne un
objet de point de personnalisation
, qui est un
objet fonction
constant d'un type de classe
littéral
semiregular
. Voir
CustomizationPointObject
pour plus de détails.
Membres de données
| Membre | Définition |
std::
basic_istream
<
CharT, Traits
>
*
stream_
|
un pointeur vers le flux d'entrée
( objet membre d'exposition uniquement* ) |
Val
value_
|
la valeur stockée
( objet membre d'exposition uniquement* ) |
Fonctions membres
construit un
basic_istream_view
(fonction membre publique) |
|||
|
retourne un itérateur
(fonction membre publique) |
|||
|
retourne
std::default_sentinel
(fonction membre publique) |
|||
Hérité de std::ranges::view_interface |
|||
|
(C++23)
|
retourne un itérateur constant vers le début de la plage
(fonction membre publique de
std::ranges::view_interface<D>
)
|
||
|
(C++23)
|
renvoie un sentinelle pour l'itérateur constant de la plage
(fonction membre publique de
std::ranges::view_interface<D>
)
|
||
|
Bien que
|
(jusqu'à C++23) |
std::ranges::basic_istream_view:: basic_istream_view
|
constexpr
explicit
basic_istream_view ( std:: basic_istream < CharT, Traits > & stream ) ; |
(depuis C++20) | |
Initialise
stream_
avec
std::
addressof
(
stream
)
, et initialise à zéro
value_
.
std::ranges::basic_istream_view:: begin
|
constexpr
auto
begin
(
)
;
|
(depuis C++20) | |
Équivalent à
*
stream_
>>
value_
;
return
iterator
{
*
this
}
;
.
std::ranges::basic_istream_view:: end
|
constexpr
std::
default_sentinel_t
end
(
)
const
noexcept
;
|
(depuis C++20) | |
Retourne std:: default_sentinel .
Classes imbriquées
le type d'itérateur de
basic_istream_view
( classe membre d'exposition uniquement* ) |
Exemple
#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'; }
Sortie :
/today/ /is/ /yesterday’s/ /tomorrow/ 1.1, 2.2, 3.3, 4.4, 55, 66, 7.7, 8.8,
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3568 | C++20 | P2325R3 a accidentellement rendu la valeur stockée initialisée par défaut | rétabli à l'initialisation par valeur |
| P2325R3 | C++20 |
le constructeur par défaut était fourni car
view
doit être
default_initializable
|
supprimé ainsi que
l'exigence |
| P2432R1 | C++20 |
ranges::istream_view
était un modèle de fonction
et ne suivait pas la convention de nommage |
transformé en modèle d'alias ;
objets de point de personnalisation ajoutés |
Voir aussi
|
itérateur d'entrée qui lit depuis
std::basic_istream
(modèle de classe) |