C++도 C언어와 마찬가지로 문자 출력을 정렬하는 방법들이 있다.

 

#include <iomanip>

 

 

 

setw()


setw()는 출력되는 공간을 설정할 수 있다.

꼭 출력하고자 하는 것의 왼쪽에 위치해야한다.

 

1
2
int value = 12345678;
cout << "(" << setw(20<< value << ")" << endl;
cs

위와 같이 출력.

자동으로 오른쪽 정렬이 된다.

총 20칸이 할당된다.

 

 

setprecision()


출력되는 칸을 구체적으로 설정한다.

 

 

1
2
3
4
5
6
7
8
9
    double number1 = 132.364, number2 = 26.91;
    double quotient = number1 / number2;
 
    cout << quotient << endl;
    cout << setprecision(5<< quotient << endl;
    cout << setprecision(4<< quotient << endl;
    cout << setprecision(3<< quotient << endl;
    cout << setprecision(2<< quotient << endl;
    cout << setprecision(1<< quotient << endl;
cs

위와같이 출력되는 칸의 수를 설정한다.

반올림 된다.

 

 

fixed


아래와 같은 유리수를 그냥 출력한다면

아래와 같이 scientific notation  표현식으로 출력된다.

1
2
3
4
5
    float x = 1231412.32;
    float y = 3435897.43;
 
    cout << x << endl;
    cout << y << endl;
cs

이를 방지하기 위해  fixed를 사용한다.

 

1
2
3
4
5
6
    cout << fixed;
    float x = 1231412.32;
    float y = 3435897.43;
 
    cout << x << endl;
    cout << y << endl;
cs

추가로 fixed는 setprecision() 같이쓰면setprecision() 의 기능이 포인트의 개수를 조정하는 것으로 바뀐다.

1
2
3
4
5
6
7
8
9
10
11
12
13
    float x = 1122.121241223;
    
    cout << fixed << setprecision(4);
    cout << x << endl;
        
    cout << fixed << setprecision(3);
    cout << x << endl;
        
    cout << fixed << setprecision(2);
    cout << x << endl;
        
    cout << fixed << setprecision(1);
    cout << x << endl;
cs

위와 같이 포인트의 출력 개수가 변경된다.

 

 

showpoint


cout은 만약 포인트에 값이 없다면(12.0 과 같이) 자동적으로 포인트를 제거하고 출력한다.

 

1
2
3
4
5
    float x = 12;
    float y = 97;
 
    cout << x << endl;
    cout << y << endl;
cs

 

하지만 showpoint를 사용한다면 표시를 해준다.

 

1
2
3
4
5
6
    cout << showpoint;
    float x = 12;
    float y = 97;
 
    cout << x << endl;
    cout << y << endl;
cs

 

left ,right


setw()와 left, right를 이용해서 출력을 왼쪽 또는 오른쪽 정렬할 수 있다.

 

1
2
3
4
5
    float x = 1212;
    float y = 9712;
 
    cout << "(" << left << setw(20<< x << ")" << endl;
    cout << "(" << right << setw(20<< x << ")" << endl;
cs

 

주의점은

항상 출력하고자 하는 것 바로 옆에 써야한다.

 

 

응용


아래와 같이 응용해서 사용 할 수 있다.

 

 

1
2
3
4
5
6
7
8
9
    float x = 12121.1;
    float y = 9712;
    float z = 23134.234434;
 
    cout << fixed << showpoint << setprecision(2);
 
    cout << "(" << right << setw(10<< x << ")" << endl;
    cout << "(" << right << setw(10<< y << ")" << endl;
    cout << "(" << right << setw(10<< z << ")" << endl;
cs

위와같이

포인트를 2칸만 출력하고 오른쪽 정렬시킬 수 있다.

 

 


 

출처 Starting Out With C++ Early Objects ninTH edition Tony Gaddis • Judy Walters • Godfrey Muganda

'C++ > 기초' 카테고리의 다른 글

파일 입출력 (fstream)  (0) 2017.10.27

+ Recent posts