[C++98] std::cout 문법은 [C언어] printf() 에 비해 개체지향적 특성을 반영하여 다형성을 지원하고 (타입에 유연) 연산자 오버로딩을 활용하여 기능을 변경할 수 있는 유연성을 가졌지만, 성능이 느리고, 여러개의 요소를 연쇄적으로 출력할때 코드가 상당히 길어지며, 출력 형식을 바꾸기 위해서 io manipulator 사용시 코드가 상당히 지저분해지는 단점이 있었습니다.
이를 해결하기 위해 나온 것이 [C++ 23] std::print, std::println 입니다. 현대적 언어 (예: 파이썬) 와 문법이 비슷해졌음을 알 수 있습니다.
사용을 위해선 #include <print> 헤더를 추가해야 합니다.
사용 예시 (std::print 와 std::println 차이점)
#include <print>
int main()
{
// std::println 은 문자열 출력이 끝나면 자동으로 개행합니다.
std::println("Please");
std::println("enter");
// std::print 는 개행하지 않습니다.
std::print("pass");
std::print("word");
// 아래와 같이 아무 인자 없이 std::println() 를 호출해 개행하는 것은 [C++ 26] 까지만 허용하며,
// 이후에는 std::print("\n") 와 같이 항상 인자를 전달해서 개행해야 합니다.
std::println();
}
// 출력 결과
Please
enter
password
사용 예시 (중괄호 표기법)
#include <print>
int main()
{
int num1 = 123;
int num2 = 456;
// 중괄호 {} 안에 아무것도 넣지 않으면 두번째 인자로부터 차례대로 대체됩니다.
std::print("{} + {} = {}! \n", num1, num2, "모르겠어요");
// 중괄호 {} 안에 숫자를 넣으면 해당 번째의 인자를 뽑아서 대체합니다.
// {0} 은 두번째 인자, {1} 은 세번째, .. 를 의미합니다.
std::print("{0} + {0} = {1}! \n", num1, num2);
}
// 출력 결과
123 + 456 = 모르겠어요!
123 + 123 = 456!
참고자료
https://en.cppreference.com/w/cpp/io/print
'C++' 카테고리의 다른 글
[C++ Core Guidelines] P.9 시간과 공간을 낭비하지 말자 (0) | 2024.04.19 |
---|---|
[C++ Core Guidelines] P.8 자원이 새지 않도록 하자 (0) | 2024.04.17 |
[C++ 20] 모듈 (Module) 사용하기 (0) | 2024.04.15 |
[C++ Core Guidelines] P.7 런타임 에러는 빨리 잡자 (0) | 2024.04.13 |
[C++ Core Guidelines] P.6 컴파일 타임에 평가가 불가능한 코드는 런타임에서라도 평가되도록 하자 (0) | 2024.04.11 |