Partager via


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.
beginC++20 Lisez la première valeur et obtenez un itérateur pour la vue.
endC++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_viewet 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

Voir aussi

<ranges>
Afficher les classes