Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[875] 답변감사합니다.(냉무)
김경래 [necle] 1810 읽음    2002-07-15 15:28
김백일 님이 쓰신 글 :
: 김경래 님이 쓰신 글 :
: : 책을 한권빌렸거든요-_-;;
: : 그안에 예제대로 치다보니..
: : setw()<-이런게 나오더군요
: : 그래서.. 첨보는거라.. 인터넷에서 찾아보니
: : setw(n) n만큼 간격으로 출력을하는형식이라고 되어있는데요
: : 저는 잘이해가 안가거든요..
: : 쉽게 설명좀 부탁합니다.
: : 그럼 즐거운 하루되세요
:
: 매니퓰레이터라는 것은
: C에서의 printf() 처럼 서식화 출력기능을 제공하는 기능입니다.
:
: setw()은 출력하는 필드의 폭을,
: setprecision()은 실수의 정밀도(소수점 오른쪽 자리수)을 설정합니다.
:
: 다음은 이미 알고계신 C의 printf()를 써서 정수와 실수의 서식화 출력을 하는 예제입니다.
:
: double root;
: for (int i = 1; i <= 100; ++i) {
:   root = sqrt(n);
:   printf("%6d%12.3f%14.4f", n, root, sqrt(root));
: }
:
: 타이핑하는 양은 상당히 적지만, 출력 변수의 타입에 맞추어서
: "%6d%12.3f%14.4f" 와 같은 암호문 같은 서식 지정을 해야 되지요. -_-;;
:
: C++에서 조정자를 쓰지 않고 출력하려면,
: 이해하기는 쉽지만 좀 귀찮은 방법으로 해야 합니다.
:
:   cout.width(6);
:   cout << n;
:   cout.width(12); cout.precision(3);
:   cout << root;
:   cout.width(14); cout.precision(4)
:   cout << sqrt(root) << end;
:
: 조정자를 사용할 경우는 역시 이해하기 쉬우면서도 훨씬 간단하게 됩니다.
:
:   cout << setw(6) << n
:        << setw(12) << setprecision(3) << root
:        << setw(14) << setprecision(4) << sqrt(root) << endl;
:
: 위의 두가지 방식의 중요한 차이점이 있는 데,
: 전자(조정자 안씀)는 한 번 설정하면 다시 설정할 때까지 설정을 유지하지만,
: 후자(조정자 사용)는 한 번 출력하면 설정이 다시 초기화되어 버립니다.
:
: 동일한 서식으로 계속 반복해서 출력할 때는
: 조정자를 사용하지 않고 출력하는 것이 코드도 간단하고 속도도 빠릅니다.
:
: 참고로, ANSI C++ 표준 제정(97년 말) 이전에 나온 컴파일러를 쓰실 경우는
: (아마 제 기억에 Borland C++ 4.0 이하 버전일 겁니다.)
: 조정자 클래스가 <iomanip.h>라는 독립된 헤더 파일로 되어 있습니다.
: 반면에, 최근(Borland C++ 5.0 이상)의 ANSI C++ 호환 컴파일러는
: #include <iostream>
: 만 하면 조정자를 쓸 수 있습니다.

+ -

관련 글 리스트
863 setw() 김경래 1948 2002/07/13
869     manipulator(조정자?)의 일종입니다. 김백일 2184 2002/07/15
875         답변감사합니다.(냉무) 김경래 1810 2002/07/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.