C++에서 출력 오른쪽 정렬
이 기사에서는 C++에서 출력 스트림을 올바르게 정렬하는 방법에 대한 여러 방법을 보여줍니다.
std::right
및std::setw
를 사용하여 C++에서 출력 오른쪽 정렬
C++ 표준 라이브러리는<< >>
연산자와 함께 사용할 때 스트림을 더 잘 제어 할 수있는 I/O
조작 도우미 함수를 제공하며<iomanip>
헤더 파일에 포함되어 있습니다. std::right
는 채우기 문자의 위치를 설정하는 스트림 조작기 중 하나입니다. 따라서 스트림 너비를 설정하는 데 사용되는std::setw
조작 함수와 함께 사용해야합니다. std::setw
는 스트림 너비에 할당 할 문자 수를 지정하는 인수로 단일 정수를 사용합니다.
다음 예제 코드에서는 정밀도가 다른 임의의 값으로 double
벡터를 초기화 한 다음 콘솔의 오른쪽에 정렬 된대로 모두 출력합니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::right;
using std::setw;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013, 92.001112, 0.000000234};
for (auto &i : d_vec) {
cout << right << setw(20) << fixed << i << endl;
}
cout << endl;
return EXIT_SUCCESS;
}
출력:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
printf
함수를 사용하여 C++에서 출력 오른쪽 정렬
I/O
형식을 처리하는 또 다른 강력한 기능은printf
입니다. printf
가cin
/cout
스트림과 함께 사용되지 않더라도 변수 인수를 개별적으로 포맷 할 수 있습니다. 부동 소수점 값에 ‘% f’형식 지정자를 사용하고 임의의 숫자 20
을 사용하여 각 요소에 채우기 문자를 추가합니다. 결과적으로 각 줄의 너비는 20
자이고 숫자가 양수이므로 채우기 문자가 왼쪽부터 추가됩니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::right;
using std::setw;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013, 92.001112, 0.000000234};
for (auto &i : d_vec) {
printf("%20f\n", i);
}
return EXIT_SUCCESS;
}
출력:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
또는 형식 지정자에 음의 정수를 삽입하여 오른쪽의 문자를 채우고 출력을 왼쪽으로 맞출 수 있습니다. printf
의 또 다른 강력한 기능은 다음 샘플 코드와 같이 리터럴 문자열 값의 형식을 지정하는 것입니다. %c
는char
형식 지정자이고0x20
값은 공백 문자의 경우 16 진수입니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::right;
using std::setw;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013, 92.001112, 0.000000234};
for (auto &i : d_vec) {
printf("%-20f\n", i);
}
printf("%60s\n", "this ought to be justified right");
printf("%-20s|%20c|%20s\n", "wandering", 0x20, "the tower");
return EXIT_SUCCESS;
}
출력:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
this ought to be justified right
wandering | | the tower
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook