std::basic_istream<CharT,Traits>:: operator>>
|
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) | |
입력 스트림에서 값을 추출합니다.
-
만약
lval
<
std::
numeric_limits
<
short
>
::
min
(
)
이면,
failbit을 설정하고 std:: numeric_limits < short > :: min ( ) 을 val 에 저장합니다. -
그렇지 않고 만약
std::
numeric_limits
<
short
>
::
max
(
)
<
lval
이면,
failbit을 설정하고 std:: numeric_limits < short > :: max ( ) 을 val 에 저장합니다. - 그렇지 않으면, static_cast < short > ( lval ) 을 val 에 저장합니다.
-
만약
lval
<
std::
numeric_limits
<
int
>
::
min
(
)
인 경우,
failbit을 설정하고 std:: numeric_limits < int > :: min ( ) 을 val 에 저장합니다. -
그렇지 않고 만약
std::
numeric_limits
<
int
>
::
max
(
)
<
lval
인 경우,
failbit을 설정하고 std:: numeric_limits < int > :: max ( ) 을 val 에 저장합니다. - 그 외의 경우에는 static_cast < int > ( lval ) 을 val 에 저장합니다.
FP
를 다음과 같이 결정합니다:
-
만약
부동소수점 변환 순위
가
/* extended-floating-point-type */
의 순위가
float
의 순위보다 작거나 같으면,
FP는 float 입니다. -
그렇지 않고, 만약
/* extended-floating-point-type */
의 부동소수점 변환 순위가
double
의 순위보다 작거나 같으면,
FP는 double 입니다. -
그 외의 경우,
FP는 long double 입니다.
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 에 저장합니다.
-
- 입력 시퀀스에서 파일 끝(end-of-file)이 발생하는 경우;
- 출력 시퀀스에 삽입이 실패하는 경우 (이 경우 삽입될 문자는 추출되지 않음);
-
예외가 발생하는 경우 (이 경우 예외는 catch되며, 문자를 삽입하지 않았고
failbit가exceptions()에서 활성화된 경우에만 재발생됨).
추출이 실패할 경우(예: 숫자가 예상되는 위치에 문자가 입력된 경우), 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 | - | 모든 데이터를 기록할 스트림 버퍼에 대한 포인터 |
반환값
참고 사항
오버로드 ( 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 또는 최소/최대 값으로
설정됨 |
참고 항목
|
문자 및 문자 배열 추출
(함수 템플릿) |
|
|
문자열에 대한 스트림 입출력 수행
(함수 템플릿) |
|
|
비트셋의 스트림 입출력 수행
(함수 템플릿) |
|
|
복소수의 직렬화 및 역직렬화
(함수 템플릿) |
|
|
(C++11)
|
의사 난수 엔진에 대한 스트림 입출력 수행
(함수 템플릿) |
|
(C++11)
|
의사 난수 분포에 대한 스트림 입출력 수행
(함수 템플릿) |
|
문자 블록 추출
(public member function) |
|
|
사용 가능한 문자 블록 추출
(public member function) |
|
|
문자 추출
(public member function) |
|
|
지정된 문자를 찾을 때까지 문자 추출
(public member function) |
|
|
(C++17)
|
문자 시퀀스를 정수 또는 부동 소수점 값으로 변환
(function) |