728x90
SMALL
공백으로 쭉 출력하는 걸 나는 당연하게도 앞에 공백을 쭉 출력해주고 사용하는 것이라고 생각했는데 아에 입력 자체를 바꾸기를 원했다.
이 평가를 당하셔서 공유해주신 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
BIG
'CPP' 카테고리의 다른 글
[c++개념공부] 생성자 초기화리스트, static 변수 함수, 레퍼런스 리턴 함수, this (0) | 2023.01.27 |
---|---|
[c++개념공부]참조자 (2) | 2023.01.27 |
[CPP 모듈 고민]SEARCH에서 출력 순서 (0) | 2023.01.15 |
[Cpp 개념공부]__how to user input the noprintable ascii on cin (어떻게 cin에서 none printable를 받을 수 있을까)__ (0) | 2023.01.13 |
[Cpp 개념공부]new 와 malloc의 차이점 (0) | 2023.01.13 |