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 . |
begin C++20 |
Leia o primeiro valor e obtenha um iterador para a exibição. |
end C++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_view
arquivo .
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