Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Представление последовательных элементов из входного потока.
Синтаксис
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>>;
Параметры шаблона
CharT
Тип символа потока.
Traits
Необязательно. Содержит сведения о типе символов потока относительно сравнения символов, определении длины строки, состоящей из этого типа символов, и т. д. Примером признака является char_traits<wchar_t>. Если значение не указано, по умолчанию используется char_traits<CharT>значение .
Val
Тип извлекаемых элементов. Например, double учитывая поток: "1.1 2.2 3.3"
stream_extractable ссылается на требование (понятие), которое тип Val можно извлечь из потока с помощью operator>> функции. Это эквивалентно следующему:
template<class Val, class CharT, class Traits>
concept stream_extractable =
requires(std::basic_istream<CharT,Traits>& is, Val& t) {
is >> t;
};
Просмотр характеристик
Описание следующих записей см. в разделе "Просмотр характеристик класса"
| Characteristic | Description |
|---|---|
| Адаптер диапазона | istream |
| Базовый диапазон | нет |
| Тип элемента | То же самое, что и Val |
| Просмотр категории итератора | input_range |
| Размер | No |
Is const-iterable |
No |
| Общий диапазон | No |
| Заимствуемый диапазон | No |
Специализации:istream_view и wistream_view
Шаблоны удобных псевдонимов предоставляются для char и wchar_t потоков, как показано ниже.
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) Считывает элементы из входного потока, состоящего char из символов.
2) Считывает элементы из входного потока, состоящего wchar_t из символов.
Для 1) и 2) Val относится к типу элементов для извлечения. Например, Val предоставляется double поток: "1.1 2.2 3.3"
Участники
| Функции-члены | Description |
|---|---|
| КонструкторыC++20 | Создайте basic_istream_view |
beginC++20 |
Прочитайте первое значение и получите итератор для представления. |
endC++20 |
Возвращает std::default_sentinel. |
Функции-члены не наследуются от view_interface.
Требования
Заголовок: <ranges> (с C++20)
Пространство имен: std::ranges
Параметр компилятора: /std:c++20 или более поздней версии требуется.
Конструкторы
Создание экземпляра basic_istream_viewобъекта .
constexpr explicit
basic_istream_view(std::basic_istream<CharT, Traits>& stream);
Параметры
stream
Поток, из которого требуется выполнить чтение.
Сведения о типе параметра шаблона см. в разделе "Параметры шаблона".
Возвращаемое значение
Экземпляр класса basic_istream_view. Внутренний basic_istream_view указатель потока инициализируется addressof(stream)в .
Замечания
Лучший способ создания basic_istream_view — использовать views::istream адаптер диапазона. Адаптеры диапазона — это способ создания классов представления. Типы представлений предоставляются в случае, если вы хотите создать собственный тип пользовательского представления.
Пример: basic_istream_view, istream_viewи 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
Прочитайте первое значение и получите итератор в представление.
constexpr auto begin();
Параметры
Нет.
Возвращаемое значение
Итератор, указывающий на первый элемент в элементе basic_istream_view.
end
Получите sentinel в конце представления.
constexpr std::default_sentinel_t end() const noexcept;
Параметры
Нет.
Возвращаемое значение
default_sentinel_t