CPP/Cpp module

[CPP함수 사용법]setfill 함수와 setw함수 사용법

뜨거운 개발자 2023. 1. 15. 00:40

공백으로 쭉 출력하는 걸 나는 당연하게도 앞에 공백을 쭉 출력해주고 사용하는 것이라고 생각했는데 아에 입력 자체를 바꾸기를 원했다.

이 평가를 당하셔서 공유해주신 soo님께 깊은 감사를 전한다.

std::setw(int n);

예시코드

// setw example
#include <iostream>// std::cout, std::endl
#include <iomanip>// std::setw
int main () {
  std::cout << std::setw(10);
  std::cout << 77 << std::endl;
	return 0;
}

설명

이 함수는 너비를 미리 지정해주는 함수이다. 인자 n은 너비를 지정합니다.

결과값

77 위 함수의 결과값을 총 10개의 칸이 지정되어있고 그 공간만큼 공백을 저장해주고 오른쪽으로 정렬이 된다.

std::setfill (char_type c);

예시코드

// setfill example
#include <iostream>     // std::cout, std::endl
#include <iomanip>      // std::setfill, std::setw

int main () {
  std::cout << std::setfill ('x') << std::setw (10);
  std::cout << 77 << std::endl;
  return 0;
}

설명

이 함수는 스트림에 채우기 문자를 지정해줍니다.

결과값

xxxxxxxxx77

궁금증

1 그렇다면 만약 지정해준 너비보다 넓은 입력을 하게 되면 어떻게 될까?

테스트코드

// setw example
#include <iostream>// std::cout, std::endl
#include <iomanip>// std::setw
int main () {
	std::string input;
	std::cin >> input;
	std::cout << std::setfill (' ') << std::setw (10);
	std::cout <<input <<"|"<<std::endl;
	return 0;
}

위의 결과값에서 볼 수 있듯 더 적은 값을 입력해주면 원하는 결과가 나오지만 그 이상값을 입력하게 되면 그 이상의 공간으로 확장되는 것을 볼수가 있다.

따라서 두개를 조합해서 사용한다면 쉽게 해결 할 수 있다.

따라서 제가 해결한 방법은요.

모든 경우에 10으로 크기를 맞추고 10을 넘어가는 경우에는 .으로 대치하는 코드

// setw example
#include <iostream>// std::cout, std::endl
#include <iomanip>// std::setw
int main () {
	std::string input;
	std::cin >> input;
	if (input.size() <= 10)
	{
		std::cout << std::setfill (' ') << std::setw (10);
		std::cout <<input;
	}
	else
	{
		for (int i=0;i < 9;i++) std::cout<< input[i];
		std::cout<< ".";
	}
	std::cout <<"|"<< std::endl;
	return 0;
}

입니다 ㅎㅎ


Uploaded by N2T

728x90