Compartilhar via


Classe basic_istream_view (Biblioteca Padrão C++)

Uma exibição de elementos sucessivos de um fluxo de entrada.

Sintaxe

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

Parâmetros de modelo

CharT
O tipo de caractere do fluxo.

Traits
Opcional. Fornece detalhes sobre o tipo de caractere do fluxo em relação à comparação de caracteres, determinação do comprimento de uma cadeia de caracteres composta por esse tipo de caractere e assim por diante. Um exemplo de traço é char_traits<wchar_t>. Se não for especificado, o padrão é char_traits<CharT>.

Val
O tipo dos elementos a serem extraídos. Por exemplo, double dado um fluxo de: "1.1 2.2 3.3"

stream_extractable refere-se ao requisito (conceito) de que o tipo Val pode ser extraído de um fluxo usando a operator>> função. É equivalente a:

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

Ver características

Para obter uma descrição das entradas a seguir, consulte Exibir características da classe

Característica Descrição
Adaptador de gama istream
Intervalo subjacente Nenhum
Tipo de elemento O mesmo que Val
Exibir categoria do iterador input_range
Tamanho Não
É const-iterável Não
Faixa comum Não
Alcance emprestado Não

Especializações:istream_view e wistream_view

Os modelos de alias de conveniência são fornecidos e char transmitem wchar_t , da seguinte maneira:

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) Lê elementos de um fluxo de entrada composto por char caracteres.
2) Lê elementos de um fluxo de entrada composto por wchar_t caracteres.

Para 1) e 2), Val refere-se ao tipo dos elementos a serem extraídos. Por exemplo, Val é double dado um fluxo de: "1.1 2.2 3.3"

Membros

Funções de membro Descrição
ConstrutoresC++20 Construa um basic_istream_view.
beginC++20 Leia o primeiro valor e obtenha um iterador para a exibição.
endC++20 Retorna std::default_sentinel

Nenhuma função de membro é herdada do view_interface.

Requisitos

Cabeçalho: <ranges> (desde C++20)

Namespace: std::ranges

Opção do compilador: /std:c++20 ou posterior é necessária.

Construtores

Construa uma instância de um basic_istream_viewarquivo .

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

Parâmetros

stream
O fluxo a ser lido.

Para obter informações sobre o tipo de parâmetro de modelo, consulte Parâmetros de modelo.

Valor retornado

Uma instância de basic_istream_view. O basic_istream_view ponteiro de fluxo interno é inicializado como addressof(stream).

Comentários

A melhor maneira de criar um basic_istream_view é usando o adaptador de views::istream intervalo. Os adaptadores de intervalo são a maneira pretendida de criar classes de exibição. Os tipos de exibição são expostos caso você queira criar seu próprio tipo de exibição personalizado.

Exemplo: 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

Leia o primeiro valor e obtenha um iterador para a exibição.

constexpr auto begin();

Parâmetros

Nenhum.

Valor retornado

Um iterador que aponta para o primeiro elemento no basic_istream_view.

end

Pegue a sentinela no final da vista.

constexpr std::default_sentinel_t end() const noexcept;

Parâmetros

Nenhum.

Valor retornado

default_sentinel_t

Confira também

<ranges>
Ver aulas