728x90
반응형
cout << 5 << endl << 1736 << endl << 52
<< endl;
라고 코드를 구성하면 아래와 같이 출력됩니다.
5
1736
52
위 출력을 아래와 같이 우측으로 일정하게 출력하려면 어떻게 cout 을 사용해야 할까요?
5
1736
52
이 문제를 해결하려면 ios::width 를 사용하시면 됩니다.
cout.width(4); // 다음 cout 사용시에 4칸의 공간을 사용하도록
함.
cout << 5; // 5는 출력시 1칸만 사용하지만 4칸을 채우기 위해서
3칸은
// 공백으로 채우게 됩니다.
하지만 width 함수는 바로 다음 cout에만 영향을 미치기 때문에 각 출력마다 모두 4칸을
확보하도록 코드를 구성하려면 아래와 같이 각각 하나씩 다 지정해야 합니다.
cout.width(4);
cout << 5 << endl;
cout << 5 << endl;
cout.width(4);
cout << 1736 << endl;
cout.width(4);
cout << 52 << endl;
그렇다면 채워지는 공간이 항상 공백문자(' ')로만 채워질까요?
그러면 너무 제한이 심하겠죠 ^^;; 그래서 ios 클래스는 fill 이라는 함수를 제공하는데
이 함수를 사용하여 채워지는 문자를 원하는 문자로 바꾸어 놓을수 있습니다.
만약, 공백문자(' ') 대신에 숫자 '0'을 채우기로 사용하고 싶다면 아래와 같이
사용하면 됩니다. 그리고 fill 함수는 width 와 달리 프로그래머가 다른 문자로 변경할때까지
지속적으로 적용됩니다. 따라서 한번만 사용하시면 됩니다.
cout.fill('0');
cout.width(4);
cout << 5 << endl;
cout.width(4);
cout << 1736 << endl;
cout.width(4);
cout << 52 << endl;
위 코드를 실행시키면 아래와 같이 출력됩니다.
0005
1736
0052
자 그럼 자리 확보를 하는 경우, 우측정렬만 될까요? 당연히 아니겠죠 ^^;; 정렬의 기준을
변경하려면 flags 함수를 사용하고 좌측 정렬을 사용하고 싶다면 ios::left 값을 우측정렬을
사용하고 싶다면 ios::right 를 사용하면 됩니다. ( 기본값은 우측정렬인 ios::right 입니다. )
cout.flags(ios::left);
cout.fill('*');
cout.width(4);
cout << 5 << endl;
cout.width(4);
cout << 1736 << endl;
cout.width(4);
cout << 52 << endl;
cout << 5 << endl;
cout.width(4);
cout << 1736 << endl;
cout.width(4);
cout << 52 << endl;
위 코드를 실행시키면 아래와 같이 출력됩니다.
728x90
'기술자료 > C C++' 카테고리의 다른 글
[오락실]기본 정렬 알고리즘 1. 버블정렬 (0) | 2009.08.12 |
---|---|
[賢彬] 변환 연산자들(Conversion Operators) (0) | 2009.08.12 |
[賢彬] [무료제공 기술서적] Inside C#pdf 와 Source File (마이크로소프트 무료 배포판) (2) | 2009.08.12 |
[賢彬] C Pointer and Arrays (0) | 2009.08.12 |
C/C++Pre-processor(전처리기)이 대해 ... (0) | 2009.08.11 |
const에 애하여............ (1) | 2009.08.11 |
VISUAL C/C++ PROJECT SETTING (1) | 2009.08.11 |
[賢彬] _STDC_, _P() 의 의미. (1) | 2009.08.11 |