Namespaces
Variants

C++ named requirements: UnformattedInputFunction

From cppreference.net
C++ named requirements

요구사항

UnformattedInputFunction 은 다음을 수행하는 스트림 입력 함수입니다:

1) 자동 저장 기간과 함께 basic_istream::sentry 타입의 객체를 생성하며, noskipws 인수가 true 로 설정되어 다음과 같은 작업을 수행합니다:
  • 입력 스트림에서 eofbit 또는 badbit 가 설정된 경우, failbit 도 함께 설정합니다. 또한 이 입력 스트림의 예외 마스크 에서 failbit 에 대한 예외가 활성화된 경우( ( exceptions ( ) & failbit ) ! = 0 ), ios_base::failure 를 발생시킵니다.
  • 해당되는 경우 tie()된 출력 스트림을 플러시합니다.
2) 센트리의 상태를 sentry::operator bool() 을 호출하여 확인합니다. 이는 basic_ios::good 과 동일합니다.
  • 연산자가 false 를 반환하거나 센트리의 생성자가 예외를 던지는 경우:
  • 입력 스트림에서 추출된 문자 수(gcount)를 0으로 설정합니다.
  • 함수가 CharT 배열에 쓰기 위해 호출된 경우, 배열의 첫 번째 위치에 CharT() (널 문자)를 기록합니다.
  • 연산자가 true 를 반환하면, rdbuf ( ) - > sbumpc ( ) 또는 rdbuf ( ) - > sgetc ( ) 를 호출하는 것처럼 입력을 수행합니다.
  • 스트림의 끝에 도달한 경우( rdbuf ( ) - > sbumpc ( ) 또는 rdbuf ( ) - > sgetc ( ) 호출이 Traits :: eof ( ) 를 반환), eofbit 을 설정합니다. 이 스트림의 예외 마스크 에서 eofbit 에 대한 예외가 활성화된 경우( ( exceptions ( ) & eofbit ) ! = 0 ), ios_base::failure 를 던집니다.
  • 입력 중 예외가 발생하면 입력 스트림에서 badbit 을 설정합니다. 이 스트림의 예외 마스크 에서 badbit 에 대한 예외가 활성화된 경우( ( exceptions ( ) & badbit ) ! = 0 ), 예외가 다시 던져집니다.
  • basic_ios::clear 에서 발생한 예외는 잡히거나 다시 던져지지 않습니다.
  • 입력 중 예외가 발생하지 않으면 입력 스트림에서 추출된 문자 수(gcount)를 설정합니다.
3) 어떤 경우든, 예외로 종료되든 반환으로 종료되든, 센트리의 소멸자는 이 함수를 떠나기 전에 호출됩니다.

표준 라이브러리

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

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 61 C++98 eofbit 및/또는 failbit 설정으로 인해
예외를 던지는 경우 badbit 설정 여부가 불명확했음
basic_ios::clear
에서 던져진 예외는 catch되거나 재던져지지 않음
LWG 160 C++98 catch된 예외의 재던짐 여부 결정 과정에서
존재하지 않는 함수 exception() 을 언급함
exceptions() 로 수정됨
LWG 243 C++98 sentry::operator bool() false
를 반환하거나 sentry 객체 생성이 실패할 때의 동작이 명시되지 않음
명시됨