C++에서 printf랑 cout은 무슨 차이가 있나요?
조회수 9777회
1 답변
-
printf
는cout
보다 빠르기 때문에 특수한 상황에서 주로 쓰이고, 보통 C++에서는cout
을 씁니다.C++의 Why should I use instead of the traditional 를 요약해보면,
safety와 error, 확장성과 상속을 생각했을때,
<iostream>
이<cstdio>
보다 낫습니다.printf()
와scanf()
도 그 자체로 좋은 기능이지만, C++ I/O가 보기에는 제약이 많습니다. 다음은 C++(<<
,>>
)과 C(printf()
,scanf()
)의 비교입니다.Type-safe :
<iostream>
은 컴파일러가 I/O되는 객체의 타입을 static하게 알 수 있습니다. 반대로<cstdio>
는%
를 써서 type을 dynamic하게 알아냅니다.Less error prone :
<cstdio>
는%
를 쓰기 때문에 형식지정자가 실제로 I/O할 객체와 일치해야 합니다.<iostream>은
%`토큰을 쓰지 않기 때문에 error를 줄일 수 있습니다.Extensible :
<iostream>
메카니즘은 기존의 코드를 바꾸지 않고 유저가 정의한 타입을 I/O할 수 있습니다.Inheritable :
<iostream>
메카니즘은std::ostream
이나std::istream
같은 real class로부터 만들어졌기 때문에<cstdio>
의FILE*
과는 달리 상속이 가능합니다. 따라서 유저가 정의한 것들도 stream처럼 보이고, 또 stream처럼 작용합니다.
댓글 입력