2장 스트링과 스트링 뷰 다루기(2)

myeongrangcoding·2023년 12월 4일
0

전문가를 위한 C++

목록 보기
4/8

스트링 포맷 지정

  • C++20부터 <format>에 정의된 std::format()으로 스트링의 포맷을 지정할 수 있다.
  • C++20 포맷 지정 라이브러리는 커스텀 타입에 대해 확장할 수 있다.
// 인덱스를 직접 지정할 수도, 인덱스를 지정하지 않고 호출할 수도 있다.
// 두 방법을 혼용할 수는 없다.
auto s1 {format("Read {0} bytes from {1}", n, "file1.txt")};

포맷 지정자

  • 값을 출력할 때 적용할 포맷을 설정한다.

[[fill]align][sign][#][0][width][.precision][type]

  • 대괄호 안에 나오는 부분은 모두 선택사항이다.

Width

  • 주어진 값의 포맷을 적용할 필드의 최소 폭을 정한다.
cout << format("|{:5}|", i) << endl;	
cout << format("|{:{}}|", i, 7) << endl;

[fill]align

  • 값이 정렬되는 방식을 지정한다.
  • 출력될 때 [width]로 지정한 최소 폭에 맞게 채울 문자가 적용된다.
    • [width]를 지정하지 않았다면 [fill]align이 적용되지 않는다.
  • <, >, ^: 왼쪽 정렬, 오른쪽 정렬, 가운데 정렬

sign

  • -: 음수에만 부호를 붙인다(디폴트).
  • +: 음수와 양수 모두에 부호를 붙인다.
  • space: 음수에는 마이너스 기호를 붙이고, 양수에는 빈 칸을 적용한다.
cout << format("|{:< 5}|", i) << endl;	// | 42  |

#

  • 10, 16, 2, 8진수 구분자를 출력한다.

type

  • 주어진 값을 반드시 따라야 할 타입을 지정한다.
    • 예) bool 타입: s(true나 false 출력), b, B, c, d, o, x, X(정수 형식에서는 1이나 0 출력).

precision(정밀도)

  • 부동소수점과 스트링 타입에만 적용된다.
    • 스트링을 표기할 때는 점 뒤에 문자 개수를 적는다.

0

  • 숫잣값에 대해 적용할 때 [width]로 지정한 최소 폭에 맞게 0을 집어넣는다.
  • 0은 해당 숫잣값의 앞에 추가된다.
profile
명랑코딩!

0개의 댓글