Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

숨창고

[C++] <cstdio>, <iostream>, <stdio.h>에 대해서 본문

공부/C++

[C++] <cstdio>, <iostream>, <stdio.h>에 대해서

숨지기 2018. 11. 2. 19:40

<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://ilashman-textcube.blogspot.com/2004/10/stdioh%EC%99%80-cstdio%EC%9D%98-%EC%B0%A8%EC%9D%B4.html


http://www.cplusplus.com/forum/beginner/14205/


https://hashcode.co.kr/questions/1239/c%EC%97%90%EC%84%9C-printf%EB%9E%91-cout%EC%9D%80-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%82%98%EC%9A%94

'공부 > 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