다음을 통해 공유


basic_istream_view 클래스(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;
  };

특성 보기

다음 항목에 대한 설명은 클래스 특성 보기를 참조 하세요.

특성 설명
범위 어댑터 istream
기본 범위 None
요소 형식 와 동일합니다. Val
반복기 범주 보기 input_range
크기 아니요
반복 const가능 아니요
공통 범위 아니요
빌린 범위 아니요

전문화:istream_viewwistream_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"

멤버

멤버 함수 설명
생성자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_viewwistream_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

참고 항목

<ranges>
클래스 보기