basic_istream_view
class (стандартная библиотека C++)
Представление последовательных элементов из входного потока.
Синтаксис
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 |
begin C++20 |
Прочитайте первое значение и получите итератор для представления. |
end C++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