※요약
C++의 cout은 C언어의 printf와 달리 출력할 것이 문자인지 정수인지 소수인지 자동으로 알아차리고 출력한다.
위와 같은 것이 가능한 이유는 객체 지향 기능을 가지고 있기 때문에 가능한 것이며, 연산자 오버로딩의 한 예이다.
※특징
- cout은 "씨 아웃"이라고 발음한다.
- cout은 문자열, 수, 문자 등 다양한 데이터형을 서식문자 없이 자동으로 출력해 준다.
- cout에서 << 표시는 왼쪽 시프트 연산자라고 부르지 않고 삽입 연산자 라고 부른다.
- << 표시는 명령문이 그 문자열을 cout에 전달한다는 것을 뜻하며 <<가 나타내는 방향이 정보의 흐름을 상징한다.
- 개행을 할 때에는 조정자 endl나 '\n'을 사용한다.
※삽입 연산자 <<에 오버로딩 되어 있는 기본 데이터형들
unsigned char
signed char
char
short
unsigned short
int
unsigned int
long
unsigned long
float
double
long double
const signed char *
const unsigned char *
const char *
void *
※cout의 진법 변경
printf의 경우 8진법이나 10진법, 16진법을 출력할 때 각각 %o, %d, %x를 사용하는 데
cout의 경우는 oct, dec, hex 조정자를 사용하여 각 진법을 출력한다.
#include <iostream>
using namespace std;
int main( )
{
int nNum(14);
//10진법 출력
cout << "10진법 : " << nNum << endl;
//8진법 모드로 설정
cout << oct;
cout << "08진법 : " << nNum << endl;
//16진법 모드로 설정
cout << hex;
cout << "16진법 : " << nNum << endl;
//10진법 다른 방법
dec(cout);
cout << "10진법 : " << nNum << endl;
//8진법 다른 방법
oct(cout);
cout << "08진법 : " << nNum << endl;
//16진법 다른 방법
hex(cout);
cout << "16진법 : " << nNum << endl;
return 0;
}
※부동 소수점의 출력 정밀도 설정
정밀도를 설정할 때는 cout의 멤버 함수인 precision을 이용하여 설정한다.
정밀도는 출력 모드에 따라 그 의미가 조금씩 다르다.
글과 아래 표만 봐서는 이해가 잘 안되는데, 예제를 실행시켜보면 이해가 될 것이다.
출력 모드 |
정밀도 의미 |
디폴트 모드 |
총 자릿수 |
고정 소수점 표기 모드 |
소수점 아래 자릿수 |
지수 표기 모드 |
소수점 아래 자릿수 |
#include <iostream>
using namespace std;
int main( )
{
float fValue1( 20.04 );
float fValue2 = 3.141592;
//디폴트 모드
cout << "fValue1 : " << fValue1 << endl;
cout << "fValue2 : " << fValue2 << endl;
//고정 소수점 표기 모드
cout << fixed;
cout.precision( 4 );
cout << "fValue1 : " << fValue1 << endl;
cout << "fValue2 : " << fValue2 << endl;
//지수 표기 모드
cout << scientific;
cout.precision( 6 );
cout << "fValue1 : " << fValue1 << endl;
cout << "fValue2 : " << fValue2 << endl;
//디폴트 모드
cout << defaultfloat;
cout.precision( 5 );
cout << "fValue1 : " << fValue1 << endl;
cout << "fValue2 : " << fValue2 << endl;
return 0;
}