Bagikan melalui


basic_istream_view kelas (Pustaka Standar C++)

Tampilan elemen berturut-turut dari aliran input.

Sintaks

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>>;

Parameter template

CharT
Jenis karakter aliran.

Traits
Opsional. Menyediakan detail tentang jenis karakter aliran mengenai membandingkan karakter, menentukan panjang string yang terdiri dari jenis karakter tersebut, dan sebagainya. Contoh sifatnya adalah char_traits<wchar_t>. Jika tidak ditentukan, default ke char_traits<CharT>.

Val
Jenis elemen yang akan diekstrak. Misalnya, double diberikan aliran: "1.1 2.2 3.3"

stream_extractable mengacu pada persyaratan (konsep) bahwa jenis Val dapat diekstrak dari aliran menggunakan operator>> fungsi . Ini setara dengan:

template<class Val, class CharT, class Traits>
concept stream_extractable =
  requires(std::basic_istream<CharT,Traits>& is, Val& t) {
    is >> t;
  };

Melihat karakteristik

Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas

Karakteristik Deskripsi
Adaptor rentang istream
Rentang yang mendasar Tidak
Jenis elemen Sama seperti Val
Lihat kategori iterator input_range
Ukuran No
Apakah const-iterable No
Rentang umum No
Rentang yang dipinjam No

Spesialisasi:istream_view dan wistream_view

Templat alias kenyamanan disediakan untuk char aliran dan wchar_t , sebagai berikut:

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) Membaca elemen dari aliran input yang terdiri dari char karakter.
2) Membaca elemen dari aliran input yang terdiri dari wchar_t karakter.

Untuk 1) dan 2), Val mengacu pada jenis elemen yang akan diekstrak. Misalnya, Val double diberikan aliran: "1.1 2.2 3.3"

Anggota

Fungsi anggota Keterangan
KonstruktorC++20 basic_istream_viewBuat .
beginC++20 Baca nilai pertama dan dapatkan iterator untuk tampilan.
endC++20 Mengembalikan std::default_sentinel

Tidak ada fungsi anggota yang diwarisi dari view_interface.

Persyaratan

Header: <ranges> (sejak C++20)

kumpulan nama XML: std::ranges

Opsi Pengkompilasi: /std:c++20 atau yang lebih baru diperlukan.

Konstruktor

Buat instans dari basic_istream_view.

constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);

Parameter

stream
Aliran untuk dibaca.

Untuk informasi tentang jenis parameter templat, lihat Parameter templat.

Nilai hasil

Instans basic_istream_view. Penunjuk basic_istream_view aliran internal diinisialisasi ke addressof(stream).

Keterangan

Cara terbaik untuk membuat adalah basic_istream_view dengan menggunakan views::istream adaptor rentang. Adaptor rentang adalah cara yang dimaksudkan untuk membuat kelas tampilan. Jenis tampilan diekspos jika Anda ingin membuat jenis tampilan kustom Anda sendiri.

Contoh: basic_istream_view, istream_view, dan 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

Baca nilai pertama dan dapatkan iterator ke tampilan.

constexpr auto begin();

Parameter

Tidak ada.

Nilai hasil

Iterator yang menunjuk pada elemen pertama di basic_istream_view.

end

Dapatkan sentinel di akhir tampilan.

constexpr std::default_sentinel_t end() const noexcept;

Parameter

Tidak ada.

Nilai hasil

default_sentinel_t

Lihat juga

<ranges>
Melihat kelas