std:: setbase
|
헤더에 정의됨
<iomanip>
|
||
|
/*unspecified*/
setbase
(
int
base
)
;
|
||
스트림의 숫자 진법을 설정합니다. 표현식에서
out
<<
setbase
(
base
)
또는
in
>>
setbase
(
base
)
로 사용될 때,
base
값에 따라 스트림
out
또는
in
의
basefield
플래그를 변경합니다:
-
값
16
은
basefield를 std::ios_base::hex 로 설정합니다. - 값 8 은 std::ios_base::oct 를 설정합니다.
- 값 10 은 std::ios_base::dec 를 설정합니다.
8, 10, 16 이외의
base
값은
basefield
를 0으로 재설정하며, 이는 10진수 출력과 접두사 의존적 입력에 해당합니다.
목차 |
매개변수
| base | - | basefield의 새 값 |
반환값
지정되지 않은 타입의 객체로서
-
만약
out
이
std::
basic_ostream
<
CharT, Traits
>
타입의 객체라면, 표현식
out
<<
setbase
(
base
)
- 타입은 std:: basic_ostream < CharT, Traits > & 을 가짐
- 값은 out 을 가짐
- 마치 f ( out, base ) 을 호출한 것처럼 동작함
-
만약
in
이
std::
basic_istream
<
CharT, Traits
>
타입의 객체라면, 표현식
in
>>
setbase
(
base
)
- 타입은 std:: basic_istream < CharT, Traits > & 을 가짐
- 값은 in 을 가짐
- 마치 f ( in, base ) 을 호출한 것처럼 동작함
함수 f 가 다음과 같이 정의되는 경우:
void f(std::ios_base& str, int base) { // 진수 필드 설정 str.setf(base == 8 ? std::ios_base::oct : base == 10 ? std::ios_base::dec : base == 16 ? std::ios_base::hex : std::ios_base::fmtflags(0), std::ios_base::basefield); }
예제
#include <iomanip> #include <iostream> #include <sstream> int main() { std::cout << "Parsing string \"10 0x10 010\"\n"; int n1, n2, n3; std::istringstream s("10 0x10 010"); s >> std::setbase(16) >> n1 >> n2 >> n3; std::cout << "hexadecimal parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; s.clear(); s.seekg(0); s >> std::setbase(0) >> n1 >> n2 >> n3; std::cout << "prefix-dependent parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; std::cout << "hex output: " << std::setbase(16) << std::showbase << n1 << ' ' << n2 << ' ' << n3 << '\n'; }
출력:
Parsing string "10 0x10 010" hexadecimal parse: 16 16 16 prefix-dependent parse: 10 16 8 hex output: 0xa 0x10 0x8
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 183 | C++98 |
setbase
는
std::ostream
또는
std::istream
타입의 스트림에서만 사용 가능 |
모든 문자 스트림에서
사용 가능 |
참고 항목
|
정수 입출력에 사용되는 진법을 변경합니다
(함수) |
|
|
숫자 진법을 나타내는 접두사 사용 여부를 제어합니다
(함수) |