[C++] cout 출력에 관해

jh Seo·2022년 10월 26일
1

C++공부

목록 보기
7/21
post-custom-banner

개요

백준 1935번 문제를 풀다가 소수점 자리 고정이 기억이 안 나서 해멨다.
이왕 검색하는 김에 cout의 함수들을 정리해본다.

cout

기본적인 출력은 cout을 사용하고, 비트 이동 연산자 <<를 오버로딩한다.
따라서 연산자 우선순위는 기존 <<과 같다.

출력값을 내부적으로 char형으로 변환하여 사용하므로 기본 자료형에 대해 사용이 자유롭다.

  • Endl은 escape문자 '\n'과 같은 역할을 하는 함수로, '\n'과 flush가 있어 출력버퍼를 비워준다.
    <<에 Endl함수가 오버로딩 되어있어 cout<<endl;이 가능하다.

iomanip 헤더에서 cout 입출력 관련 조정함수를 다룬다.

->setw, setfill, setbase, setprecision

setw() 함수는 출력하는 칸을 설정하는 함수다.

cout<<setw(6)<<endl; 

이런식으로 사용을 한다.
설정되면 출력칸이 6칸으로 고정되고,오른쪽으로 치우쳐져서 출력된다.
한번 설정시 유지되지 않는다.

setfill() 함수는 출력칸의 공백칸들을 char형으로 채워넣는 함수다.

보통 setw와 같이 사용하며 Setfill('a')이렇게 적용시 공백칸들에 a가 채워진다.
한번 설정시 유지된다.

setbase()는 진법을 설정하는 함수로

setbase(8)로 설정시 숫자가 8진법으로 나타내지고,
setbase(10)을 사용시 10진법, Setbase(16)으로 설정시 16진법으로 적용된다.
한번 설정시 유지된다.

setprecision()은 유효숫자를 설정하는 함수다.

기본적으론 정수부분 + 실수부분 합쳐서 설정한 유효숫자만큼 나타내고,
cout<<fixed사용시 실수부분을 설정한 유효숫자만큼 나타낸다.
잘리는 마지막부분에서 반올림을 하여 출력한다.

float a= 3.141592
cout<<Setprecision(5)<<a;

이런식으로 출력해보면 3.1416으로 9에서 반올림해서 출력을 하고,

float a= 3.141592
cout<<fixed;
cout<<Setprecision(5)<<a;

이런식으로 출력해보면 3.14159로 2에서 반올림한다.

iomanip헤더가 아닌 함수들

oct()

8진수로 표기하는 함수.

oct(cout);
cout<<oct;

한번 지정시 유지

dec

10진수로 표기하는 함수
10진수는 showpos를 이용해 부호까지 출력이 가능하다,

cout<<dec<<showpos<<10;

이런식
dec는 유지가 되지만 showpos는 유지가 안 된다.

hex

16진수로 표기하는 함수
16진수를 표기하는 방법엔 showbase, uppercase 두 종류가 있다.

cout<<hex<<11;

이렇게 작성 시 b라고 출력하지만

cout<<hex<<showbase<<11;

이렇게 작성 시 0xb 이렇게 출력한다.

cout<<hex<<showbase<<uppercase<<11;

uppercase를 적용시 0xB 이렇게 대문자로 출력한다.

hex,showbase, uppercase는 한번 설정시 다 유지된다.

setf(),unsetf()

setf()는 다른 함수들을 한번에 설정 가능하고, unsetf() 이런 식으로 한번에 해제 가능하다.

cout.setf(ios::oct||ios::showpos) 

이런 식으로 사용하거나,

cout.unsetf(ios::oct||ios::showpos)

이런 식으로 해제 가능하다.

precision

cout.precision()을 사용해 유효숫자를 정할 수 있다.
정수 부분을 포함한 값이다.
precision()으로 정한 유효숫자 값을 0을 포함해 다 보고 싶다면,

cout<<showpoint

를 사용하면 다 보여진다.
precision, showpoint 다 한번 설정시 유지된다.

fixed

cout<<fixed를 설정하면 고정 소수점으로 표현된다.
설정은 유지된다,

scientific

cout<scientific 을 설정하면 부동소수점으로 표현된다.
1.234e+01이런식으로
설정은 유지된다.

width

cout.width()는 setw와 같은 역할이다. 출력 칸을 설정해준다.
설정은 유지되지 않는다.

fill

cout.fill()도 위의 setfill과 같은 역할이다.
설정이 유지된다.

left

채울 문자를 왼쪽부터 출력한다.
설정이 유지된다.

cout<<right 로 설정하면 채울 문자를 오른쪽부터 정렬하여 출력한다.
설정은 유지된다.

internal

cout<< internal은 부호와 숫자를 따로 따로 출력이가능하다.
예를 들어 cout.width(10)으로 설정하고
cout<<internal<<-60이라고 입력하면 - 60 이렇게 출력한다.

boolalpha

cout<<boolalpha를 사용시 true, false가 원래 1, 0으로 표기되지만
문자열로 표기된다.

profile
코딩 창고!
post-custom-banner

0개의 댓글