모두의 코드
C++ 레퍼런스 - std::dec, hex, oct 조작자들

작성일 : 2019-04-27 이 글은 20624 번 읽혔습니다.

아직 C++ 에 친숙하지 않다면 씹어먹는 C++ 은 어때요?

std::dec, std::hex, std::oct

<ios> 에 정의됨

std::ios_base& dec(std::ios_base& str);
std::ios_base& hex(std::ios_base& str);
std::ios_base& oct(std::ios_base& str);

정수 입출력 연산의 진법을 바꾼다.

  • dec : 스트림 str 이 정수 입출력 연산 시에 10 진법을 사용하도록 한다. 이는 str.setf(std::ios_base::dec, std::ios_base::basefield) 를 호출하는 것과 같다.

  • hex : 스트림 str 이 정수 입출력 연산 시에 16 진법을 사용하도록 한다. 이는 str.setf(std::ios_base::hex, std::ios_base::basefield) 를 호출하는 것과 같다.

  • oct : 스트림 str 이 정수 입출력 연산 시에 8 진법을 사용하도록 한다. 이는 str.setf(std::ios_base::oct, std::ios_base::basefield) 를 호출하는 것과 같다.

이 함수들은 입출력 조작자(manipulator) 라고 불리며, std::basic_ostream 의 출력 연산자 (<<) 나 std::basic_istream 의 입력 연산자 (>>) 와 함께 사용할 수 있다.

참고로 조작자에 의해 한 번 스트림의 진법 형식이 바뀌면 계속 유지된다.

인자

  • str : 입출력 스트림

리턴값

바뀐 입출력 스트림 (str)

실행 예제

#include <iostream>
#include <sstream>
int main() {
  std::cout << "42 를 8 진법으로  : " << std::oct << 42 << '\n'
            << "42 를 10 진법으로 : " << std::dec << 42 << '\n'
            << "42 를 16 진법으로 : " << std::hex << 42 << '\n';
  int n;
  std::istringstream("2A") >> std::hex >> n;
  std::cout << std::dec << "'2A' 를 10 진법으로 읽어들인 값은 " << n << '\n';
  std::cout << std::hex << "42 는 16 진법으로 " << 42
            << " 이고 21 은 16 진법으로 " << 21 << '\n';
}

실행 결과

42 를 8 진법으로  : 52
42 를 10 진법으로 : 42
42 를 16 진법으로 : 2a
'2A' 를 10 진법으로 읽어들인 값은 42
42 는 16 진법으로 2a 이고 21 은 16 진법으로 15

참고 자료

  • setbase : 정수 입출력 연산의 진법을 바꾼다.

  • showbase, noshowbase : 정수 출력 시에 몇 진법을 사용하는지 나타낼 지 여부를 바꾼다.

댓글이 3 개 있습니다!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

    댓글을 불러오는 중입니다..