C++ named requirements: FormattedInputFunction
From cppreference.net
요구사항
FormattedInputFunction 은 다음 작업을 수행하는 스트림 입력 함수입니다:
-
basic_istream::sentry
타입의 객체를 자동 저장 기간과 함께
noskipws인수가 false 로 설정된 상태로 생성하며, 이는 다음을 수행합니다:
-
-
입력 스트림에서
eofbit
또는
badbit
이 설정된 경우,
failbit도 함께 설정합니다. 또한 이 입력 스트림의 예외 마스크 에서failbit에 대한 예외가 활성화된 경우( ( exceptions ( ) & failbit ) ! = 0 ), ios_base::failure 를 발생시킵니다. - 해당되는 경우 tie()된 출력 스트림을 플러시합니다.
-
이 입력 스트림에
ios_base::skipws플래그가 설정된 경우, 다음 중 하나가 참이 될 때까지 입력 스트림에서 문자를 추출하고 버립니다:
-
- 입력 스트림에서 다음 사용 가능한 문자가 현재 이 입력 스트림에 임베드된 로캘의 std::ctype 패싯으로 테스트했을 때 공백 문자가 아닌 경우. 이 비-공백 문자는 추출되지 않습니다.
-
스트림의 끝에 도달한 경우, 이때
failbit와eofbit이 설정되고, 이러한 비트들 중 하나에 대해 스트림의 예외가 활성화된 경우 ios_base::failure 가 발생합니다.
-
입력 스트림에서
eofbit
또는
badbit
이 설정된 경우,
-
센트리의 상태를
sentry::operator bool()을 호출하여 확인합니다. 이는 basic_ios::good 과 동일합니다. - 센트리가 false 를 반환하거나 센트리의 생성자가 예외를 던진 경우, 입력이 수행되지 않습니다.
- 센트리가 true 를 반환하면, rdbuf ( ) - > sbumpc ( ) 또는 rdbuf ( ) - > sgetc ( ) 을 호출하는 것처럼 입력을 수행합니다.
-
-
스트림의 끝에 도달하면(
rdbuf
(
)
-
>
sbumpc
(
)
또는
rdbuf
(
)
-
>
sgetc
(
)
호출이
Traits
::
eof
(
)
를 반환하는 경우),
eofbit을 설정합니다. 이 스트림의 예외 마스크 에서eofbit에 대한 예외가 활성화된 경우( ( exceptions ( ) & eofbit ) ! = 0 ), ios_base::failure 를 throw합니다. -
입력 중 예외가 발생하면 입력 스트림에
badbit을 설정합니다. 이 스트림의 예외 마스크 에서badbit에 대한 예외가 활성화된 경우( ( exceptions ( ) & badbit ) ! = 0 ), 해당 예외를 다시 throw합니다. - 예외가 발생하지 않은 경우, * this 를 반환합니다.
-
스트림의 끝에 도달하면(
rdbuf
(
)
-
>
sbumpc
(
)
또는
rdbuf
(
)
-
>
sgetc
(
)
호출이
Traits
::
eof
(
)
를 반환하는 경우),
- 어떤 경우든, 예외로 종료되든 반환으로 종료되든, 센트리의 소멸자는 이 함수를 떠나기 전에 호출됩니다.
표준 라이브러리
다음 표준 라이브러리 함수들은 FormattedInputFunction s 입니다.
- basic_istream::operator>> (int, long, double, void*, bool)
- operator>> (std::basic_istream, char&)
- operator>> (std::basic_istream, char*)
- operator>> (std::basic_istream, std::bitset)
- operator>> (std::basic_istream, std::string)
-
operator>>, std::get_money 의 반환값에 호출될 때
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 160 | C++98 |
잡힌 예외가 재던져지는지 여부를 결정하는 과정에서
존재하지 않는 함수
exception()
를 언급함
|
exceptions() 로 수정됨 |