※요약

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;
}


+ Recent posts