728x90
C++을 좀 사용해보신분들은 이미 fmt::format을 많이 쓰고 있었을거라고 생각한다.
이제 동일한 기능이 C++20에도 포함이 되었다.
// format : format string 반환
auto str = std::format("{}, {}, {}", 1, 1.1, asdf);
// format_to : 결과를 output iterator에 반환
std::string buffer;
format_to(std::back_inserter(buffer), "{}, {}, {}", 1, 1.1, asdf);
// format_to_n : 최대 n개의 문자를 output iterator에 반환
std::string buffer2;
format_to(std::back_inserter(buffer2), 2, "{}, {}, {}", 1, 1.1, asdf);
만약 문자열에 "{" 를 사용하고 싶으면 {{ 와 같이 두개를 사용하면된다.
auto str = format("{{asdf {}}}", 5);
순서 지정하는 방법
format("{}, {}, {}", 10, 20, 30);
format("{1}, {0}, {2}", 10, 20, 30);
빈칸 채우는 문자 지정 (default : space)
정렬
< left : 숫자가 아니면 default
> right : 숫자면 default
^ center
format("{:10}", 5); // " 5"
format("{:*<10}", 5); // "5*********"
format("{:*>10}", 5); // "*********5"
format("{:*^10}", 5); // "****5*****"
부호 (정수나 부동소수점에 사용)
+ : 양수면 + 붙여라
- : 음수면 - 붙여라
format("{0:}, {0:+}, {0:-}", 0) // 0, +0, 0
format("{0:}, {0:+}, {0:-}", 1) // 1, +1, 1
format("{0:}, {0:+}, {0:-}", -1) // -1, -1, -1
정수에 대한 이진수, 팔진수, 십육진수 표현
b : 이진수
미지정 : 팔진수
x : 십육진수
#015 : 0을 15개의 padding 추가
format("#015", 0x78) "000000000000120"
format("#015b", 0x78) "0b0000001111000"
format("#015x", 0x78) "0x0000000000078"
위에서 {:10} 은 최소 10개를 만든다는 뜻이었다. 반대로 최대 갯수도 지정할 수 있다.
precision 부동소수점과 문자열의 최대 갯수를 지정
double d = 123.456789;
format("{:.50}", d); // "123.45678900000000555777....."
format("{:.8}", d); // "123.45679" - 반올림됨
format("{:.5}", d); // "123.46" - 반올림됨
format("{:.5}", "Hello World"); // "Hello"
타입 지정
s : string
b : binary 0b로 시작
B : b와 같지만 0B로 시작
d : decimal
o : octal
x : hexadecimal 0x로 시작
X : x와 같지만 0X로 시작
부동소수점 관련 (e, E, f, F ,g, G) : 생략... (지수 표시, 정밀도 등등...)
728x90
'Basic Programming > C++ 20' 카테고리의 다른 글
C++20 - 그 외 함수들... (0) | 2024.01.21 |
---|---|
C++20 - jthread (0) | 2024.01.21 |
C++20 - Time Zone (0) | 2024.01.20 |
C++20 - Calendar (0) | 2024.01.17 |
C++20 - 비트연산 (0) | 2024.01.17 |