C++

2024.02.21 - 과제 중 문제 해결

강병곤 2024. 2. 21. 16:51

====================

위와 같이 출력을 하고 싶어서 setw()함수와 setfill()함수를 사용하기로 했다.

띠용 결과가 안나온다. 뭐가 문제일까?

 

setfill('=')을 지우고 playerHp를 출력하도록 바꿔보았다.

정상적으로 20개의 칸을 만들고 100이 오른쪽에 붙어서 출력되는 것을 확인했다.

 

setfill('=')을 추가해보았다.

띠요옹 정상적으로 공백에 '='가 채워서 출력된다.

 

혹시 setfill('=') 만으로는 출력을 할 수 없는 것일까?

setfill()이 공백을 채워주지만, 출력할 내용이 없기 때문에 공백을 채워주지 않는 것 같다.

 

아무 내용 없는 ""을 추가로 출력시켜서 문제를 해결하였다.

 

 

이제 아래와 같은 출력을 원한다.

====================

| playerHp: 100                  |

| playerAtk: 20                   |

====================

 

아래와 같은 코드를 짜보았다.

이런. 변수를 출력시켰더니 공백 밖에서 출력 되는 것 같다. 

setw(20)이 "| playerHp: "에 적용되고 끝나는 것 같다?

좀 불편해보이지만 "| playerHp: " 뒤에 남는 공백만큼 setw(7)을 붙여서 해결할 수 있어보인다.

 

원하는 대로 출력 되는 것 같다.

 

이제 이쁘게 만들어 보자.

결과는 만족스럽지만, 변수앞에 일일히 남는 공백을 세어서 setw()를 넣어주어야 하는 번거로움이 있다.

나중에 다른 방법을 찾아보자.

 

- setf()는 줄마다 써주어야 한다.

- setfill()은 바꿔주지 않는 한 다음 줄에도 적용이 된다.

- std::left도 바꿔주지 않는 한 다음 줄에도 적용이 되는 것 같다.