basic_istream_view
(Clase, Biblioteca estándar de C++)
Vista de elementos sucesivos de un flujo de entrada.
Sintaxis
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 plantilla
CharT
Tipo de carácter de la secuencia.
Traits
Opcional. Proporciona detalles sobre el tipo de carácter de la secuencia con respecto a la comparación de caracteres, determinar la longitud de una cadena formada por ese tipo de carácter, etc. Un rasgo de ejemplo es char_traits<wchar_t>
. Si no se especifica, el valor predeterminado es char_traits<CharT>
.
Val
Tipo de los elementos que se van a extraer. Por ejemplo, double
dada una secuencia de: "1.1 2.2 3.3"
stream_extractable
hace referencia al requisito (concepto) que el tipo Val
se puede extraer de una secuencia mediante la operator>>
función . Es equivalente a:
template<class Val, class CharT, class Traits>
concept stream_extractable =
requires(std::basic_istream<CharT,Traits>& is, Val& t) {
is >> t;
};
Características de la vista
Para obtener una descripción de las siguientes entradas, vea View class characteristics (Ver características de clase).
Característica | Descripción |
---|---|
Adaptador de rango | istream |
Intervalo subyacente | Ninguno |
Tipo de elemento | Igual que Val |
Ver categoría de iterador | input_range |
Tamaño | No |
Es const -iterable |
No |
Rango común | No |
Intervalo prestado | No |
Especializaciones:istream_view
y wistream_view
Las plantillas de alias de conveniencia se proporcionan para char
y wchar_t
secuencias, como se indica a continuación:
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) Lee los elementos de un flujo de entrada compuesto por char
caracteres.
2) Lee elementos de una secuencia de entrada compuesta de wchar_t
caracteres.
Para 1) y 2), Val
hace referencia al tipo de los elementos que se van a extraer. Por ejemplo, Val
se double
asigna una secuencia de: "1.1 2.2 3.3"
Miembros
Funciones miembro | Descripción |
---|---|
ConstructoresC++20 | Construya un elemento basic_istream_view . |
begin C++20 |
Lea el primer valor y obtenga un iterador para la vista. |
end C++20 |
Devuelve std::default_sentinel |
No se hereda ninguna función miembro de view_interface
.
Requisitos
Encabezado: <ranges>
(desde C++20)
Espacio de nombres: std::ranges
Opción del compilador: /std:c++20
o posterior es necesaria.
Constructores
Construya una instancia de .basic_istream_view
constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);
Parámetros
stream
Flujo del que se va a leer.
Para obtener información sobre el tipo de parámetro de plantilla, consulte Parámetros de plantilla.
Valor devuelto
Instancia de basic_istream_view
. El basic_istream_view
puntero de flujo interno se inicializa en addressof(stream)
.
Comentarios
La mejor manera de crear un basic_istream_view
es usar el adaptador de views::istream
rango. Los adaptadores de rango son la manera prevista de crear clases de vista. Los tipos de vista se exponen en caso de que desee crear su propio tipo de vista personalizado.
Ejemplo: basic_istream_view
, istream_view
y 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
Lea el primer valor y obtenga un iterador en la vista.
constexpr auto begin();
Parámetros
Ninguno.
Valor devuelto
Iterador que apunta al primer elemento de basic_istream_view
.
end
Obtenga el sentinel al final de la vista.
constexpr std::default_sentinel_t end() const noexcept;
Parámetros
Ninguno.
Valor devuelto
default_sentinel_t