std::ranges:: views:: istream, std::ranges:: basic_istream_view, std::ranges:: istream_view, std::ranges:: wistream_view
|
헤더 파일에 정의됨
<ranges>
|
||
|
template
<
std::
movable
Val,
class
CharT,
class
Traits
=
std::
char_traits
<
CharT
>
>
requires std:: default_initializable < Val > && /*stream-extractable*/ < Val, CharT, Traits > class basic_istream_view : public ranges:: view_interface < basic_istream_view < Val, CharT, Traits >> |
(1) | (C++20부터) |
|
도우미 템플릿
|
||
|
template
<
class
Val
>
using istream_view = ranges :: basic_istream_view < Val, char > ; |
(2) | (C++20부터) |
|
template
<
class
Val
>
using wistream_view = ranges :: basic_istream_view < Val, wchar_t > ; |
(3) | (C++20부터) |
|
사용자 정의 지점 객체
|
||
|
namespace
views
{
template
<
class
T
>
|
(4) | (C++20부터) |
|
도우미 개념
|
||
|
template
<
class
Val,
class
CharT,
class
Traits
>
concept
/*stream-extractable*/
=
|
(5) | ( 설명 전용* ) |
U
가
std::
remove_reference_t
<
decltype
(
e
)
>
인 경우.
U
가
std::
basic_istream
<
typename
U
::
char_type
,
typename
U
::
traits_type
>
에 대해 공개적이고 명확하게 파생되지 않은 경우 형식이 잘못되었으며, 이는
치환 실패
를 초래할 수 있습니다.
Val
타입의 lvalue가
std::
basic_istream
<
CharT, Traits
>
타입의 lvalue로부터 추출될 수 있을 때 만족됩니다.
basic_istream_view
의 반복자 타입은 이동 전용입니다: 이는
LegacyIterator
요구 사항을 충족하지 않으므로, C++20 이전의
알고리즘
과 함께 작동하지 않습니다.
목차 |
커스터마이제이션 포인트 객체
이름
views::istream<T>
는
사용자 지정 지점 객체
를 나타내며, 이는
함수 객체
의 const이며
리터럴
semiregular
클래스 타입입니다. 자세한 내용은
CustomizationPointObject
을 참조하십시오.
데이터 멤버
| 멤버 | 정의 |
std::
basic_istream
<
CharT, Traits
>
*
stream_
|
입력 스트림에 대한 포인터
( 설명 전용 멤버 객체* ) |
Val
value_
|
저장된 값
( 설명 전용 멤버 객체* ) |
멤버 함수
basic_istream_view
를 생성합니다
(public 멤버 함수) |
|||
|
반복자를 반환합니다
(public member function) |
|||
|
반환
std::default_sentinel
(public member function) |
|||
std::ranges::view_interface 에서 상속됨 |
|||
|
(C++23)
|
범위의 시작을 가리키는 상수 반복자를 반환합니다
(
std::ranges::view_interface<D>
의 public 멤버 함수)
|
||
|
(C++23)
|
범위의 상수 반복자에 대한 센티널을 반환합니다
(
std::ranges::view_interface<D>
의 public 멤버 함수)
|
||
|
|
(until C++23) |
std::ranges::basic_istream_view:: basic_istream_view
|
constexpr
explicit
basic_istream_view ( std:: basic_istream < CharT, Traits > & stream ) ; |
(C++20 이후) | |
stream_
를
std::
addressof
(
stream
)
로 초기화하고,
value_
를 값 초기화합니다.
std::ranges::basic_istream_view:: begin
|
constexpr
auto
begin
(
)
;
|
(C++20 이후) | |
다음 코드와 동등합니다:
*
stream_
>>
value_
;
return
iterator
{
*
this
}
;
.
std::ranges::basic_istream_view:: end
|
constexpr
std::
default_sentinel_t
end
(
)
const
noexcept
;
|
(C++20 이후) | |
std:: default_sentinel 를 반환합니다.
중첩 클래스
basic_istream_view
의 반복자 타입
( 설명 전용 멤버 클래스* ) |
예제
#include <algorithm> #include <iomanip> #include <iostream> #include <iterator> #include <ranges> #include <sstream> #include <string> int main() { auto words = std::istringstream{"today is yesterday’s tomorrow"}; for (const auto& s : std::views::istream<std::string>(words)) std::cout << std::quoted(s, '/') << ' '; std::cout << '\n'; auto floats = std::istringstream{"1.1 2.2\t3.3\v4.4\f55\n66\r7.7 8.8"}; std::ranges::copy ( std::views::istream<float>(floats), std::ostream_iterator<float>{std::cout, ", "} ); std::cout << '\n'; }
출력:
/today/ /is/ /yesterday’s/ /tomorrow/ 1.1, 2.2, 3.3, 4.4, 55, 66, 7.7, 8.8,
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3568 | C++20 | P2325R3이 실수로 저장된 값을 기본 초기화되도록 만듦 | 값 초기화로 복원됨 |
| P2325R3 | C++20 |
기본 생성자가 제공됨
view
는
default_initializable
이어야 함
|
요구사항과 함께
제거됨 |
| P2432R1 | C++20 |
ranges::istream_view
는 함수 템플릿이었고
명명 규칙을 따르지 않음 |
별칭 템플릿으로 변경됨;
사용자 정의 지점 객체 추가됨 |
참고 항목
|
std::basic_istream
에서 읽어들이는 입력 반복자
(클래스 템플릿) |