Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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 constiterowalne |
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. |
beginC++20 |
Przeczytaj pierwszą wartość i pobierz iterator widoku. |
endC++20 |
Zwraca std::default_sentinel |
Żadne funkcje składowe nie są dziedziczone z view_interfaceelementu .
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_viewi 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