숨창고
[C++] <cstdio>, <iostream>, <stdio.h>에 대해서 본문
<cstdio>가 뭔가요?
cstdio는 C STandarD Input and Output의 약자로, C언어의 stdio.h와 같습니다.
입/출력과 관련된 옛날 C함수들을 포함한 헤더파일입니다. (printf(), fprintf(), fopen, etc)
C++의 <stdio.h>와 뭐가 다른가요?
기능상의 차이는 없으나
stdio.h는 global namespace를 사용하고
cstdio는 std라는 namespace를 사용합니다.
<iostream>과의 차이점은 뭔가요?
iostream은 입/출력을 수행하기 위한 모든 C++ 스트림들을 포함한 헤더파일입니다.
이 둘은 하는 일은 같지만, 둘 다 사용할 수 있다면 iostream을 사용하는 것이 더 안전합니다.
type-safe : iostream은 compiler가 I/O되는 객체의 형식을 static하게 알 수 있습니다. 그러나 cstdio는 %를 써서 type을 dynamic하게 알아냅니다.
에러 : cstdio는 %를 쓰기 때문에 형식지정자가 실제로 I/O할 객체와 일치해야합니다. iostream은 % 토큰을 쓰지 않기 때문에 error를 줄일 수 있습니다.
확장성 : iostream은 기존의 코드를 바꾸지 않고 유저가 정의한 타입을 I/O할 수 있습니다.
상속성 : iostream 메커니즘은 std::ostream이나 std:istream같은 real class로부터 만들어졌기 때문에 cstdio의 FILE*과는 달리 상속이 가능합니다. 따라서 유저가 직접 stream을 정의해서 작동시킬 수 있습니다.
cstdio의 printf()는 인자의 type을 검사하지 않는 가변인자함수이고, 다른 type으로 overload될 수도 없기 때문입니다.
+)
C의 모든 keyword들을 C++에서도 쓸 수 있지만, 역은 언제나 성립하진 않습니다.
출처 :
http://www.cplusplus.com/forum/beginner/14205/
'공부 > C++' 카테고리의 다른 글
ios::sync_with_stdio(false), cin.tie(NULL) 사용법과 설명 (0) | 2018.11.08 |
---|---|
[C++] string class (문자열) (0) | 2018.11.05 |
[C++] vector에 대해서 (0) | 2018.11.02 |