iostream에서 지원하는 텍스트 포맷팅 함수들, 2001

@codemaru · October 20, 2011 · 3 min read

C언어를 배우고 난 뒤 처음 C++ 책을 접하게 되면 iostream이라는 것을 배우게 됩니다. 모두 단순히 출력또는 입력을 연산자 오버로딩을 통해 간단하게 해주는 정도의 기능을 알고 넘어가게 되는데 사실 그정도만 알면 되죠. 하지만 가끔 그 이상의 iostream기능이 궁금할때가 있습니다. 그것을 잘 몰라서 고생하는 경우가 계신것 같아서 옵션으로 쓸수 있는 것들을 한번 추려서 올려봅니다.

이 자료는 모두 Practical C++ Programming에서 발췌된 것입니다. 참고로 책에서도 C++의 입,출력 포맷 방식이 아주 불편한 방식이라구 [1]. sprintf등을 통한 포맷된 문자열을 화면으로 출력하기를 권하고 있습니다. 하지만 때로는 이런것들을 알고 있는 것이 도움이 될때도 있기에 올려봅니다. 그럼 다들 즐프하세염.

입출력 변환 플래그

ios::skipws 입력에서 공백 문자를 건너뛴다.

ios::left 출력 왼쪽 정렬

ios::right 출력 오른쪽 정렬

ios::internal 숫자 출력은 부호나 기조 문자와 숫자 사이에 채우기 문자 삽입

ios::dec 10진수

ios::oct 8진수

ios::hex 16진수

ios::showbase 각 숫자의 서두에 기저를 표시한다. 예를들어 16진수이면 0x가 앞에출력된다.

ios::showpoint 모든 부동 소수에 대해 10진수로 표시한다.

ios::uppercas 16진수 변환시 대문자로 출력

ios::showpos 모든 양수 앞에 + 기호 붙임

ios::scientific 출력 시에 모든 부동 소수를 지수 형식으로 변환

ios::fixed 출력시에 모든 부동 소수를 고정 소수로 변환

ios::unitbuf 버퍼 출력

ios::studio 출력 후에 스트립 플러시

입출력 조정자

setiosflags(long flags) 지정 변환 플래그 설정

resetiosflags(long flags) 지정 플래그로 복원

dec 10진수

hex 16진수

oct 8진수

setbase(int base) 기저를 8,10,16으로 변환

setw(int width) 출력 너비 설정

setprecision(int precision) 부동 소수 출력의 정확도 설정

setfill(char ch) 채우기 문자 설정

ws 입력시에 공백 문자 건너뜀

endl 라인끝 출력

ends 문자열 끝 출력

flush 버퍼에 있는 내용을 출력

[1] boost::format을 사용하면 C++에서도 printf같이 편리하게 자료를 출력하실 수 있습니다.

http://www.boost.org/doc/libs/1_47_0/libs/format/

 1  0

 

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중