Compartir a través de


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.
beginC++20 Lea el primer valor y obtenga un iterador para la vista.
endC++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_viewy 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

Consulte también

<ranges>
Ver clases