<개인공부>/[C++]

[C++] std::setw, std::setfill, std::left, std::right (입출력 형태 지정2)

BlockDMask 2021. 2. 5. 00:30
반응형

안녕하세요. BlockDMask 입니다.
지난시간에 이어서 오늘도 조정자 함수 io manipulator 들에 대해서 알아보려고합니다.
오늘은 왼쪽 정렬을하는 std::left, 오른쪽 정렬을하는 std::right, 출력시 개수를 지정하는 std::setw, 빈 공간을 채우는 std::setfill 함수. 이렇게 총 4개의 함수에 대해서 알아보겠습니다.

<목차>
1. C++ std::setw, std::setfill 함수 설명
2. C++ std::left, std::right 함수 설명

 

 

1. std::setw, std::setfill 함수 설명


- 헤더파일

<iomanip>

 

- std::setw 함수

std::setw(n)

출력시 길이를 n으로 지정.
std::setw 출력에 사용할 필드의 넓이를 설정합니다. 즉 가로길이를 지정할 수 있습니다.

 

- std::setfill 함수

std::setfill(c)

비어있는 공간을 c로 채워주는 함수입니다.
setfill 함수로 한번 설정을 해주면 설정이 계속해서 적용이 되는 특징을 가지고 있습니다.
한번 설정한 후에 원래대로 돌려주어야 합니다.

 

- std::setw, std::setfill 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <iomanip>
 
int main(void)
{
    int a = 1234567890;
    int b = 1;
    int c = 22;
 
    // 10자리 길이 확인용.
    std::cout << a << std::endl;
 
 
    // setw를 이용해서 10넓이 만큼 출력
    std::cout << std::setw(10<< b << std::endl;
    std::cout << std::setw(10<< c << std::endl;
 
 
    // setfill 이용해서 빈 공간 채우기
    std::cout << std::setw(10<< std::setfill('#'<< b << std::endl;
    std::cout << std::setw(10<< std::setfill('#'<< c << std::endl;
    
    
    // setfill 을 안해줘도 #으로 채워진다.
    // setfill이 한번 설정을 하면 계속해서 적용되는것을 확인.
    std::cout << std::setw(10<< b <<std::endl;
    std::cout << std::setw(10<< c << std::endl;
 
 
    // setfill 빈칸으로 되돌리기
    std::cout << std::setfill(' ');
    std::cout << std::setw(10<< b << std::endl;
    std::cout << std::setw(10<< c << std::endl;
 
    return 0;
}
 
 
cs

setfill, setw 예제

이렇게 std:setw(10) 함수를 통해서 10자리의 빈 공간을 만들고 변수 b, 변수 c의 값을 집어넣게되면 자동적으로 자릿수에 맞게 채워지는 것을 볼 수 있습니다.

std::setfill('#') 함수가 설정이 되면 비어있는 공간이 # 문자로 채워져 있는 것을 볼 수 있습니다.

그 후 따로 std::setfill 함수를 호출하지 않아도 빈칸에 자동적으로 # 문자가 채워지는 것을 볼 수 있으며, 이는 std::setfill 설정이 한번 적용되면 그 다음 std::cout 출력 때에도 적용되는 것을 알 수 있습니다.

std::setfill(' ')을 호출해주어서 다시 빈칸으로 변경하게 되면 원래대로 돌아오는 것을 볼 수 있습니다.

 

 

2. std::left, std::right 함수 설명


- 헤더파일

<iomanip>

 

- std::left 함수

std::left

왼쪽 정렬 설정

 

- std::right 함수

std::right

오른쪽 정렬 설정

 

- std::left, std::right 함수 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <iomanip>
 
int main(void)
{
    int a = 1234567890;
    int b = 1;
    int c = 22;
 
    // 10자리 길이 확인용.
    std::cout << a << std::endl;
 
 
    // setw를 이용해서 10넓이 만큼 출력
    std::cout << std::setw(10<< b << std::endl;
    std::cout << std::setw(10<< c << std::endl;
 
    
    // 왼쪽 오른쪽
    std::cout << std::setw(10<< std::left << b << std::endl;
    std::cout << std::setw(10<< std::right << c << std::endl;
 
 
    // 왼쪽 출력 설정
    std::cout << std::left;
    std::cout << std::setw(10<< b << std::endl;
    std::cout << std::setw(10<< c << std::endl;
 
 
    // 오른쪽 출력 설정
    std::cout << std::right;
    std::cout << std::setw(10<< b << std::endl;
    std::cout << std::setw(10<< c << std::endl;
 
    return 0;
}
 
 
cs

left, right 예제

std::left 함수는 왼쪽 정렬로 출력을하고, std::right 함수는 오른쪽 정렬하여 출력하는 것을 볼 수 있습니다.
std::left, std::rigth 함수도 한번 설정을 하면 그 다음 std::cout 에 계속해서 영향을 준다는 점을 확인할 수 있습니다.

 

 

이상 조정자 함수 setfill, left, right, setw에 대해서 알아보았습니다.
오늘도 읽어주셔서 감사합니다.

반응형