Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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