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 . |
begin C++20 |
Leggere il primo valore e ottenere un iteratore per la visualizzazione. |
end C++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_view
e 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