[C++] 데이터 형식 조정자

dada·2024년 10월 23일
0

C++

목록 보기
6/7

2. 데이터 형식 조정

  • 지금까지의 프로그램은 표준 형식으로 값을 입출력하나, 상황에 따라 입출력 형식을 바꿔야 하는 경우 조정자 객체를 사용
  • 조정자는 크게 데이터 출력을 위한 조정자와 데이터 입력을 위한 조정자로 구분 가능

2-1. 출력 조정자

2-1-1. 매개변수가 없는 조정자

  • boolalpha 조정자 사용 예제
// Declaration
bool x = true;
bool y = false;

// Testing values without manipulators
cout << "Value of x using default:" << x << endl; // 1
cout << "Value of y using default:" << y << endl; // 0

// Testing values using manipulators
cout << "Value of x using manipulator:" << boolalpha << x << endl; // true
cout << "Value of y:" << y; // false

2-1-1-1. 숫자의 진법을 변경하는 조정자(dec, oct, hex)

  • Integers 컴퓨터는 내부에서 2진법으로 모든 데이터를 저장하고 조작
  • 출력할 때는 일반적으로 10진법(dec), 8진법(oct), 16진법(hex) 중 하나로 출력

2-1-1-2. 진법의 접두사를 붙이는 조정자(noshowbase, showbase)

  • 숫자를 다른 진법으로 출력할 때 어떤 진법으로 출력하고 있는지 나타내는 접두사를 지정

  • 10진수: 아무것도 붙이지 않음

  • 8진수: 0

  • 16진수: 0x

  • 진법 조정자, 접두사 조정자 사용 예제

// Declaration of variable x
int x = 1237;

// Outputting x in three bases without showbase
cout << "x in decimal:" << x << endl; // 1237
cout << "x in octal:" << oct << x << endl; // 2325
cout << "x in hexadecimal:" << hex << x << endl << endl; // 4d5

// Outputting x in three bases with showbase
cout << "x in decimal:" << x << endl; // 1237 : 그대로
cout << "x in octal:" << showbase << oct << x << endl; // 02325 : 8진수 - 0 붙음
cout << "x in hexadecimal:" << showbase << hex << x; //0x4d5 : 16진수 - 0x 붙음

2-1-1-3. 고정 소수점 출력 조정자와 과학 표기법 출력 조정자(fixed, scientific)

// Declarations
double x = 1237;
double y = 12376745.5623;

//Using fixed (default) and showpoint manipulator
cout << "x in fixed_point format:" << x << endl; // 1237
cout << "x in fixed_point format:" << showpoint << x << endl; // 1237.00

//Using scientific manipulator
cout << "y in scientific format:" << y << scientific; // 1.23767e+007
  • showpoint: 부동 소수점 수를 출력할 때 소수점 이하 자릿수를 강제로 표시하도록 지시
    • 원래 c++은 정수의 경우 1237.0과 같이 표시 안하고, 1237 그대로 표시하나, showpoint 조정자를 붙였기에 1237.00을 출력
  • scientific: 과학적 표기법으로 출력
    • y = 1.23767455623 × 10^7
    • y << scientific → 1.23767e+007 → 10의 7승이기에 007로 표기

2-2-1. 매개변수가 있는 조정자

// Declaration
double x = 1237234.1235;

// Applying common formats
cout << fixed << setprecision(2) << showpos << setfill(*); // -> 소수점 2자리 표시, 나머지 *로 채움

// Printing x in three formats
cout << setw(15) << left << x << endl; // +1237231.12**** -> 왼쪽부터 숫자 채우고 15글자에 맞추기
cout << setw(15) << internal << x << endl; // +****1237231.12 -> +와 숫자 사이에 *채우기
cout << setw(15) << right << x; // ****+1237231.12 -> 오른쪽에 숫자 채우고 15글자 맞추기 

2-2. 입력 조정자

: 입력 스트림에서 사용하는 조정자

2-2-1. 불 자료형으로 입력하기

// Declaration
bool flag;

// Input value using manipulator
cout << "Enter true or false for flag:";
cin >> boolalpha >> flag; // if true

// Output value
cout << flag ; // 1

2-2-2. 여러 진법으로 정수 입력받기

// Declaration
int num1, num2, num3;

// Input first number in decimal (no manipulator)
cout << "Enter the first number in decimal:";
cin >> num1; // 10진수로 입력 124

// Input second number in octal
cout << "Enter the second number in octal:";
cin >> oct >> num2; // 8진수로 입력 76

// Input second number in hexadecimal
cout << "Enter the third number in hexadecimal:";
cin >> hex >> num3; // 16진수로 입력 2ab

// Output values
cout << num1 << endl; // 124
cout << num2 << endl; // 76 -> dec -> 62
cout << num3; // 2ab -> dec -> 683
profile
AI, Python 등 공부용 블로그

0개의 댓글