Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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