※요약
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; }
'C/C++ 문법 > C++ 문법 임시' 카테고리의 다른 글
[C++] 05. 인라인 함수 - inline function (1) | 2014.01.23 |
---|---|
[C++] 04. 매개변수의 디폴트 값 (0) | 2014.01.22 |
[C++] 03. 함수 오버로딩 ( function overloading ) (0) | 2014.01.22 |
[C++] 02-02. scanf를 대신하는 cin (0) | 2014.01.22 |
[C++] 01. Hello World (0) | 2014.01.21 |