Namespaces
Variants

C++ named requirements: FormattedInputFunction

From cppreference.net
C++ named requirements

요구사항

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 가 발생합니다.
  • 센트리의 상태를 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 를 반환합니다.
  • 어떤 경우든, 예외로 종료되든 반환으로 종료되든, 센트리의 소멸자는 이 함수를 떠나기 전에 호출됩니다.

표준 라이브러리

다음 표준 라이브러리 함수들은 FormattedInputFunction s 입니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 160 C++98 잡힌 예외가 재던져지는지 여부를 결정하는 과정에서
존재하지 않는 함수 exception() 를 언급함
exceptions() 로 수정됨