C++에서 출력 오른쪽 정렬

Jinku Hu 2023년10월12일
  1. std::rightstd::setw를 사용하여 C++에서 출력 오른쪽 정렬
  2. printf 함수를 사용하여 C++에서 출력 오른쪽 정렬
C++에서 출력 오른쪽 정렬

이 기사에서는 C++에서 출력 스트림을 올바르게 정렬하는 방법에 대한 여러 방법을 보여줍니다.

std::rightstd::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입니다. printfcin/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의 또 다른 강력한 기능은 다음 샘플 코드와 같이 리터럴 문자열 값의 형식을 지정하는 것입니다. %cchar 형식 지정자이고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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - C++ IO