basic_istream_view
class (standardní knihovna jazyka C++)
Zobrazení po sobě jdoucích prvků ze vstupního datového proudu
Syntaxe
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 šablony
CharT
Typ znaku datového proudu.
Traits
Nepovinné. Poskytuje podrobnosti o typu znaku datového proudu, pokud jde o porovnávání znaků, určení délky řetězce tvořeného tímto typem znaku atd. Příkladem vlastnosti je char_traits<wchar_t>
. Pokud není zadáno, je výchozí hodnota char_traits<CharT>
.
Val
Typ prvků, které se mají extrahovat. double
Například při datovém proudu:"1.1 2.2 3.3"
stream_extractable
odkazuje na požadavek (koncept), který Val
lze extrahovat z datového proudu pomocí operator>>
funkce. Je to ekvivalentní:
template<class Val, class CharT, class Traits>
concept stream_extractable =
requires(std::basic_istream<CharT,Traits>& is, Val& t) {
is >> t;
};
Zobrazení charakteristik
Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.
Charakteristika | Popis |
---|---|
Adaptér rozsahu | istream |
Podkladová oblast | Nic |
Typ elementu | Stejné jako Val |
Zobrazit kategorii iterátoru | input_range |
Tříděný | No |
Je const -iterable |
No |
Společný rozsah | No |
Zapůjčený rozsah | No |
Specializace:istream_view
a wistream_view
Šablony aliasů pro pohodlí jsou k dispozici pro char
streamy wchar_t
, a to následujícím způsobem:
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) Čte prvky ze vstupního datového proudu složeného ze char
znaků.
2) Čte prvky ze vstupního datového proudu složeného ze wchar_t
znaků.
Pro 1) a 2) Val
odkazuje na typ prvků, které se mají extrahovat. Například Val
je double
uveden datový proud: "1.1 2.2 3.3"
Členové
Členské funkce | Popis |
---|---|
KonstruktoryC++20 | Vytvoření .basic_istream_view |
begin C++20 |
Přečtěte si první hodnotu a získejte iterátor pro zobrazení. |
end C++20 |
Návraty std::default_sentinel |
Žádné členské funkce nejsou zděděné z view_interface
.
Požadavky
Hlavička: <ranges>
(od C++20)
Obor názvů: std::ranges
Je vyžadována možnost kompilátoru: /std:c++20
nebo novější.
Konstruktory
Vytvoření instance objektu basic_istream_view
.
constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);
Parametry
stream
Datový proud, ze který se má číst.
Informace o typu parametru šablony naleznete v tématu Parametry šablony.
Vrácená hodnota
Instance basic_istream_view
. Interní ukazatel datového basic_istream_view
proudu je inicializován na addressof(stream)
.
Poznámky
Nejlepší způsob, jak vytvořit, basic_istream_view
je použití adaptéru rozsahu views::istream
. Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení jsou vystaveny pro případ, že chcete vytvořit vlastní typ zobrazení.
Příklad: basic_istream_view
, istream_view
a 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
Přečtěte si první hodnotu a získejte iterátor do zobrazení.
constexpr auto begin();
Parametry
Žádná
Vrácená hodnota
Iterátor ukazující na první prvek v objektu basic_istream_view
.
end
Získejte sentinel na konci zobrazení.
constexpr std::default_sentinel_t end() const noexcept;
Parametry
Žádná
Vrácená hodnota
default_sentinel_t