스트링 포맷 지정
- 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;
#
- 10, 16, 2, 8진수 구분자를 출력한다.
type
- 주어진 값을 반드시 따라야 할 타입을 지정한다.
- 예) bool 타입: s(true나 false 출력), b, B, c, d, o, x, X(정수 형식에서는 1이나 0 출력).
precision(정밀도)
- 부동소수점과 스트링 타입에만 적용된다.
- 스트링을 표기할 때는 점 뒤에 문자 개수를 적는다.
0
- 숫잣값에 대해 적용할 때 [width]로 지정한 최소 폭에 맞게 0을 집어넣는다.
- 0은 해당 숫잣값의 앞에 추가된다.