Condividi tramite


basic_istream_view classe (libreria standard C++)

Visualizzazione degli elementi successivi da un flusso di input.

Sintassi

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>>;

Parametri del modello

CharT
Tipo di carattere del flusso.

Traits
Facoltativo. Fornisce informazioni dettagliate sul tipo di carattere del flusso relativo al confronto dei caratteri, alla determinazione della lunghezza di una stringa costituita da tale tipo di carattere e così via. Un tratto di esempio è char_traits<wchar_t>. Se non specificato, il valore predefinito è char_traits<CharT>.

Val
Tipo degli elementi da estrarre. Ad esempio, double dato un flusso di: "1.1 2.2 3.3"

stream_extractable si riferisce al requisito (concetto) che il tipo Val può essere estratto da un flusso usando la operator>> funzione . Equivale a:

template<class Val, class CharT, class Traits>
concept stream_extractable =
  requires(std::basic_istream<CharT,Traits>& is, Val& t) {
    is >> t;
  };

Visualizzare le caratteristiche

Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe

Caratteristica Descrizione
Adattatore di intervallo istream
Intervallo sottostante None
Tipo di elemento Uguale a Val
Visualizzare la categoria iteratore input_range
Dimensioni No
Iterabile const No
Intervallo comune No
Intervallo preso in prestito No

Specializzazioni:istream_view e wistream_view

I modelli alias pratici vengono forniti per char i flussi e wchar_t , come indicato di seguito:

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) Legge gli elementi da un flusso di input composto da char caratteri.
2) Legge gli elementi da un flusso di input composto da wchar_t caratteri.

Per 1) e 2), Val fa riferimento al tipo degli elementi da estrarre. Ad esempio, Val viene double fornito un flusso di: "1.1 2.2 3.3"

Membri

Funzioni membro Descrizione
Costruttori C++20 Creare un oggetto basic_istream_view.
beginC++20 Leggere il primo valore e ottenere un iteratore per la visualizzazione.
endC++20 Restituisce std::default_sentinel.

Nessuna funzione membro viene ereditata da view_interface.

Requisiti

Intestazione: <ranges> (da C++20)

Spazio dei nomi: std::ranges

Opzione del compilatore: /std:c++20 o versione successiva è obbligatoria.

Costruttori

Costruire un'istanza di un oggetto basic_istream_view.

constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);

Parametri

stream
Flusso da cui leggere.

Per informazioni sul tipo di parametro del modello, vedere Parametri del modello.

Valore restituito

Istanza di basic_istream_view. Il basic_istream_view puntatore al flusso interno viene inizializzato su addressof(stream).

Osservazioni:

Il modo migliore per creare un basic_istream_view oggetto consiste nell'usare l'adattatore views::istream di intervallo. Gli adattatori di intervallo sono il modo previsto per creare classi di visualizzazione. I tipi di visualizzazione vengono esposti nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.

Esempio: basic_istream_view, istream_viewe 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

Leggere il primo valore e ottenere un iteratore nella visualizzazione.

constexpr auto begin();

Parametri

Nessuna.

Valore restituito

Iteratore che punta al primo elemento dell'oggetto basic_istream_view.

end

Ottenere l'sentinel alla fine della visualizzazione.

constexpr std::default_sentinel_t end() const noexcept;

Parametri

Nessuna.

Valore restituito

default_sentinel_t

Vedi anche

<ranges>
Visualizzare le classi