basic_istream_view
classe (bibliothèque standard C++)
Vue des éléments successifs d’un flux d’entrée.
Syntaxe
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>>;
Paramètres de modèle
CharT
Type de caractère du flux.
Traits
facultatif. Fournit des détails sur le type de caractère du flux concernant la comparaison des caractères, la détermination de la longueur d’une chaîne composée de ce type de caractère, et ainsi de suite. Un exemple de trait est char_traits<wchar_t>
. S’il n’est pas spécifié, la valeur par défaut est char_traits<CharT>
.
Val
Type des éléments à extraire. Par exemple, double
en fonction d’un flux de : "1.1 2.2 3.3"
stream_extractable
fait référence à l’exigence (concept) que le type Val
peut être extrait d’un flux à l’aide de la operator>>
fonction. Il équivaut à :
template<class Val, class CharT, class Traits>
concept stream_extractable =
requires(std::basic_istream<CharT,Traits>& is, Val& t) {
is >> t;
};
Afficher les caractéristiques
Pour obtenir une description des entrées suivantes, consultez les caractéristiques de classe View
Caractéristique | Description |
---|---|
Adaptateur de plage | istream |
Plage sous-jacente | Aucune |
Type d’élément | Identique à Val |
Afficher la catégorie d’itérateur | input_range |
Taille | Non |
Est const -itérable |
Non |
Plage commune | Non |
Plage empruntée | Non |
Spécialisations :istream_view
et wistream_view
Les modèles d’alias pratiques sont fournis pour char
et wchar_t
les flux, comme suit :
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) Lit les éléments d’un flux d’entrée composé de char
caractères.
2) Lit les éléments d’un flux d’entrée composé de wchar_t
caractères.
Pour 1) et 2), Val
fait référence au type des éléments à extraire. Par exemple, Val
un flux de données est double
fourni : "1.1 2.2 3.3"
Membres
Fonctions membres | Description |
---|---|
Constructeurs C++20 | Construisez un basic_istream_view . |
begin C++20 |
Lisez la première valeur et obtenez un itérateur pour la vue. |
end C++20 |
Retourne std::default_sentinel . |
Aucune fonction membre n’est héritée de view_interface
.
Spécifications
En-tête : <ranges>
(depuis C++20)
Espace de noms : std::ranges
Option du compilateur : /std:c++20
ou version ultérieure est requise.
Constructeurs
Construire une instance d’un basic_istream_view
.
constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);
Paramètres
stream
Flux à partir duquel effectuer la lecture.
Pour plus d’informations sur le type de paramètre de modèle, consultez Paramètres de modèle.
Valeur retournée
Instance de basic_istream_view
. Le basic_istream_view
pointeur de flux interne est initialisé vers addressof(stream)
.
Notes
La meilleure façon de créer un basic_istream_view
est d’utiliser l’adaptateur views::istream
de plage. Les adaptateurs de plage sont la méthode prévue pour créer des classes d’affichage. Les types d’affichage sont exposés au cas où vous souhaitez créer votre propre type d’affichage personnalisé.
Exemple : basic_istream_view
, istream_view
et 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
Lisez la première valeur et obtenez un itérateur dans la vue.
constexpr auto begin();
Paramètres
Aucune.
Valeur retournée
Itérateur pointant vers le premier élément du basic_istream_view
.
end
Obtenez la sentinelle à la fin de la vue.
constexpr std::default_sentinel_t end() const noexcept;
Paramètres
Aucune.
Valeur retournée
default_sentinel_t