Namespaces
Variants

std::basic_istream<CharT,Traits>:: operator>>

From cppreference.net
basic_istream & operator >> ( unsigned short & value ) ;
(1)
basic_istream & operator >> ( unsigned int & value ) ;
(2)
basic_istream & operator >> ( long & value ) ;
(3)
basic_istream & operator >> ( unsigned long & value ) ;
(4)
basic_istream & operator >> ( long long & value ) ;
(5) (C++11 이후)
basic_istream & operator >> ( unsigned long long & value ) ;
(6) (C++11 이후)
basic_istream & operator >> ( float & value ) ;
(7)
basic_istream & operator >> ( double & value ) ;
(8)
basic_istream & operator >> ( long double & value ) ;
(9)
basic_istream & operator >> ( bool & value ) ;
(10)
basic_istream & operator >> ( void * & value ) ;
(11)
basic_istream & operator >> ( short & value ) ;
(12)
basic_istream & operator >> ( int & value ) ;
(13)
basic_istream & operator >> ( /* extended-floating-point-type */ & value ) ;
(14) (C++23 이후)
basic_istream & operator >> ( std:: ios_base & ( * func ) ( std:: ios_base & ) ) ;
(15)
basic_istream & operator >> ( std:: basic_ios < CharT, Traits > &
( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ;
(16)
basic_istream & operator >> ( basic_istream & ( * func ) ( basic_istream & ) ) ;
(17)
basic_istream & operator >> ( std:: basic_streambuf < CharT, Traits > * sb ) ;
(18)

입력 스트림에서 값을 추출합니다.

1-11) 앞에 오는 공백을 건너뛰면서 값을 추출합니다. 값은 주어진 참조 value 에 저장됩니다.
이 함수는 FormattedInputFunction 으로 동작합니다. 센트리 객체를 생성하고 검사한 후, 선행 공백을 건너뛸 수 있으며, std::num_get::get() 을 호출하여 값을 추출합니다.
12) 선행 공백을 건너뛸 수 있는 short 값을 추출합니다. 이 값은 주어진 참조 value 에 저장됩니다.
이 함수는 FormattedInputFunction 으로 동작합니다. 선행 공백을 건너뛸 수 있는 sentry 객체를 구성하고 검사한 후, std::num_get::get() 을 호출하여 long lval 을 추출합니다. 이후:
13) 선행 공백을 건너뛰면서 int 값을 추출합니다. 이 값은 주어진 참조 value 에 저장됩니다.
이 함수는 FormattedInputFunction 으로 동작합니다. 선행 공백을 건너뛸 수 있는 sentry 객체를 구성하고 검사한 후, std::num_get::get() 을 호출하여 long lval 을 추출합니다. 이후:
14) 확장 부동소수점 값을 추출하며 선행 공백 문자를 건너뛸 수 있습니다. 값은 주어진 참조 value 에 저장됩니다. 라이브러리는 매개변수 value 의 참조 타입으로 모든 cv-한정자가 없는 확장 부동소수점 타입 에 대한 오버로드를 제공합니다.
표준 부동소수점 타입 FP 를 다음과 같이 결정합니다:
  • 만약 부동소수점 변환 순위 /* extended-floating-point-type */ 의 순위가 float 의 순위보다 작거나 같으면, FP float 입니다.
  • 그렇지 않고, 만약 /* extended-floating-point-type */ 의 부동소수점 변환 순위가 double 의 순위보다 작거나 같으면, FP double 입니다.
  • 그 외의 경우, FP long double 입니다.
이 함수는 FormattedInputFunction 으로 동작합니다. 선행 공백을 건너뛸 수 있는 sentry 객체를 구성하고 검사한 후, std::num_get::get() 을 호출하여 FP fval 을 추출합니다. 이후:
  • 만약 fval < - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) 이면, failbit 을 설정하고 - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) val 에 저장합니다.
  • 그렇지 않고 만약 std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) < fval 이면, failbit 을 설정하고 std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) val 에 저장합니다.
  • 그렇지 않으면, static_cast < /* extended-floating-point-type */ > ( fval ) val 에 저장합니다.
15-17) 호출 func ( * this ) , 여기서 func 은 I/O 매니퓰레이터입니다.
18) UnformattedInputFunction 처럼 동작합니다. sentry 객체를 구성하고 검사한 후, * this 에서 모든 데이터를 추출하여 sb 에 저장합니다. 다음 조건 중 하나가 충족되면 추출이 중단됩니다:
  • 입력 시퀀스에서 파일 끝(end-of-file)이 발생하는 경우;
  • 출력 시퀀스에 삽입이 실패하는 경우 (이 경우 삽입될 문자는 추출되지 않음);
  • 예외가 발생하는 경우 (이 경우 예외는 catch되며, 문자를 삽입하지 않았고 failbit exceptions() 에서 활성화된 경우에만 재발생됨).
두 경우 모두, 이후 호출되는 gcount() 를 통해 접근되는 멤버 변수에 추출된 문자 수를 저장합니다. sb 가 null 포인터이거나 sb 에 문자가 삽입되지 않은 경우, setstate ( failbit ) 를 호출합니다 (활성화된 경우 std::ios_base::failure 를 throw할 수 있음).

추출이 실패할 경우(예: 숫자가 예상되는 위치에 문자가 입력된 경우), 0이 value 에 기록되고 failbit 가 설정됩니다. 부호 있는 정수의 경우, 추출 결과가 value 에 저장하기에 너무 크거나 작은 값인 경우, 각각 std:: numeric_limits < T > :: max ( ) 또는 std:: numeric_limits < T > :: min ( ) 가 기록되고 failbit 플래그가 설정됩니다. 부호 없는 정수의 경우, 추출 결과가 value 에 저장하기에 너무 크거나 작은 값인 경우, std:: numeric_limits < T > :: max ( ) 가 기록되고 failbit 플래그가 설정됩니다.

목차

매개변수

value - 추출된 값을 저장할 정수 또는 부동소수점 값에 대한 참조
func - I/O 조작자 함수에 대한 포인터
sb - 모든 데이터를 기록할 스트림 버퍼에 대한 포인터

반환값

1-16,18) * this
17) func ( * this )

참고 사항

오버로드 ( 14 ) 의 경우, 확장 부동 소수점 타입이 표준 부동 소수점 타입의 랭크와 동일하지 않은 부동 소수점 변환 랭크를 가질 때, 변환 과정에서 이중 반올림이 발생하여 부정확한 결과를 초래할 수 있습니다. std::from_chars() 는 최대 정확도가 중요한 상황에서 사용될 수 있습니다.

예제

#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    std::string input = "41 3.14 false hello world";
    std::istringstream stream(input);
    int n;
    double f;
    bool b;
    stream >> n >> f >> std::boolalpha >> b;
    std::cout << "n = " << n << '\n'
              << "f = " << f << '\n'
              << "b = " << std::boolalpha << b << '\n';
    // extract the rest using the streambuf overload
    stream >> std::cout.rdbuf();
    std::cout << '\n';
}

출력:

n = 41
f = 3.14
b = false
hello world

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 64 C++98 (18) 오버로드가 setstate ( failbit ) 호출로 발생한
std::ios_base::failure 만 다시 던질 수 있는지 불명확했음
포착된 모든 예외를
다시 던질 수 있음
LWG 118 C++98 (12,13) 오버로드가 추출을 num_get::get 에 위임했으나,
short int 에 대한 오버로드가 없었음
short 또는 int 대신 long 값이 추출됨
LWG 413 C++98 (18) 오버로드가 sb 에서 문자를 추출하는 동안 발생한
예외만 다시 던졌으나, 문자는 * this 에서 추출됨
sb * this 로 수정
LWG 567 C++98 (18) 오버로드가 LWG 이슈 60 의 해결로 인해
FormattedInputFunction 처럼 동작했음
UnformattedInputFunction 처럼
동작함
LWG 661 C++98 (12,13) 오버로드가 LWG 이슈 118 의 해결로 인해
추출된 숫자를 value 에 저장하지 않았음
오버플로가 발생하지 않으면
숫자를 저장함
LWG 696 C++98 추출 실패 시 value 가 변경되지 않았음 0 또는 최소/최대 값으로
설정됨

참고 항목

문자 및 문자 배열 추출
(함수 템플릿)
문자열에 대한 스트림 입출력 수행
(함수 템플릿)
비트셋의 스트림 입출력 수행
(함수 템플릿)
복소수의 직렬화 및 역직렬화
(함수 템플릿)
의사 난수 엔진에 대한 스트림 입출력 수행
(함수 템플릿)
의사 난수 분포에 대한 스트림 입출력 수행
(함수 템플릿)
문자 블록 추출
(public member function)
사용 가능한 문자 블록 추출
(public member function)
문자 추출
(public member function)
지정된 문자를 찾을 때까지 문자 추출
(public member function)
(C++17)
문자 시퀀스를 정수 또는 부동 소수점 값으로 변환
(function)