|
김백일 님이 쓰신 글 :
: 김경래 님이 쓰신 글 :
: : 책을 한권빌렸거든요-_-;;
: : 그안에 예제대로 치다보니..
: : 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>
: 만 하면 조정자를 쓸 수 있습니다.
|