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> >
requires std::default_initializable<Val> &&
/*stream-extractable*/<Val, CharT, Traits>
class basic_istream_view
: public ranges::view_interface<basic_istream_view<Val, CharT, Traits>>
|
(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 points de personnalisation |
||
namespace views {
template< class T >
constexpr /* unspecified */ istream = /* unspecified */;
}
|
(4) | (depuis C++20) |
| Concepts d'aide |
||
template< class Val, class CharT, class Traits >
concept /*stream-extractable*/ =
requires(std::basic_istream<CharT, Traits>& is, Val& t) {
is >> t;
};
|
(5) | (exposition uniquement*) |
operator>>.char et wchar_t.views::istream<T>(e) est équivalent à une expression à ranges::basic_istream_view<T, typename U::char_type, typename U::traits_type>(e) pour toute sous-expression appropriée e, où U est std::remove_reference_t<decltype(e)>.U n'est pas dérivé de std::basic_istream<typename U::char_type, typename U::traits_type> de manière publique et non ambiguë, ce qui peut entraîner un échec de substitution./*stream-extractable*/<Val, CharT, Traits>est satisfait lorsqu'une lvalue de type Val peut être extraite d'une lvalue de type std::basic_istream<CharT, Traits>.Le type d'itérateur de basic_istream_view est exclusif au déplacement : il ne satisfait pas aux exigences de LegacyIterator, et donc ne fonctionne pas avec les algorithmes antérieurs à C++20.
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 | Description |
std::basic_istream<CharT, Traits>* stream_
|
un pointeur vers le flux d'entrée (objet membre à titre d'exposé seulement*) |
Val value_
|
la valeur stockée (objet membre à titre d'exposé seulement*) |
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 ranges::view_interface | |
(C++23) |
renvoie un itérateur constant au début de la plage (fonction membre publique de std::ranges::view_interface<D>)
|
(C++23) |
renvoie une 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) |