basic_istream_view
class (Standardowa biblioteka C++)
Widok kolejnych elementów ze strumienia wejściowego.
Składnia
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>>;
Parametry szablonu
CharT
Typ znaku strumienia.
Traits
Opcjonalny. Zawiera szczegółowe informacje na temat typu znaku strumienia dotyczącego porównywania znaków, określania długości ciągu złożonego z tego typu znaków itd. Przykładową cechą jest char_traits<wchar_t>
. Jeśli nie zostanie określony, wartość domyślna to char_traits<CharT>
.
Val
Typ elementów do wyodrębnienia. Na przykład double
przy użyciu strumienia: "1.1 2.2 3.3"
stream_extractable
odnosi się do wymagania (koncepcji), że typ Val
można wyodrębnić ze strumienia operator>>
przy użyciu funkcji . Jest to równoważne:
template<class Val, class CharT, class Traits>
concept stream_extractable =
requires(std::basic_istream<CharT,Traits>& is, Val& t) {
is >> t;
};
Właściwości widoku
Opis poniższych wpisów można znaleźć w temacie View class characteristics (Wyświetlanie właściwości klas)
Characteristic | opis |
---|---|
Adapter zakresu | istream |
Zakres bazowy | Brak |
Typ elementu | To samo co Val |
Wyświetl kategorię iteratora | input_range |
Wielkości | Nie. |
Jest const iterowalne |
Nie. |
Wspólny zakres | Nie. |
Pożyczony zakres | Nie. |
Specjalizacje:istream_view
i wistream_view
Szablony aliasów wygody są udostępniane dla char
strumieni i wchar_t
w następujący sposób:
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) Odczytuje elementy ze strumienia wejściowego składającego się z char
znaków.
2) Odczytuje elementy ze strumienia wejściowego składającego się z wchar_t
znaków.
W przypadku 1) i 2) Val
odnosi się do typu elementów do wyodrębnienia. Na przykład Val
otrzymuje double
strumień: "1.1 2.2 3.3"
Elementy członkowskie
Funkcje składowe | Opis |
---|---|
KonstruktoryC++20 | Skonstruuj element basic_istream_view . |
begin C++20 |
Przeczytaj pierwszą wartość i pobierz iterator widoku. |
end C++20 |
Zwraca std::default_sentinel |
Żadne funkcje składowe nie są dziedziczone z view_interface
elementu .
Wymagania
Nagłówek: <ranges>
(od C++20)
Przestrzeń nazw: std::ranges
Opcja kompilatora: /std:c++20
lub nowsza jest wymagana.
Konstruktory
Skonstruuj wystąpienie klasy basic_istream_view
.
constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);
Parametry
stream
Strumień do odczytu.
Aby uzyskać informacje o typie parametru szablonu, zobacz Parametry szablonu.
Wartość zwracana
basic_istream_view
Wystąpienie. Wewnętrzny wskaźnik strumienia basic_istream_view
jest inicjowany do addressof(stream)
.
Uwagi
Najlepszym sposobem utworzenia elementu basic_istream_view
jest użycie adaptera views::istream
zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.
Przykład: basic_istream_view
, istream_view
i 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
Przeczytaj pierwszą wartość i pobierz iterator do widoku.
constexpr auto begin();
Parametry
Brak.
Wartość zwracana
Iterator wskazujący pierwszy element w elemecie basic_istream_view
.
end
Pobierz element sentinel na końcu widoku.
constexpr std::default_sentinel_t end() const noexcept;
Parametry
Brak.
Wartość zwracana
default_sentinel_t