C,C++

iostream 헤더 파일 이란 <iostream>

Dongjun_ 2023. 7. 17. 15:21

iosteam 이 뭘까?

 -> Input/Output Stream(입출력 스트림) 되시겄다.

 

c 에서의 stdio.h 와 같다고 보면 된다.
 (참고로 스튜디오 아니다... STanDard Input/Output 이다... 현직 개발자중에 모르는 사람 많드라?)

 

iosteam 용도는 뭘까?

 -> 위에 써 있다. 입출력 용도이다.

 

iostream 안에 뭐가 있을까?

 -> 대충 cin / cout / cerr / clog 4개 있다고 보면 된다.

 

iostream 헤더 파일에 무엇이 정의 되어 있는지 확인하기 제일 빠른 방법은 IDE 를 활용 하는 것이다.

 

아래 사진은 vs 2015 에서 iostream 을 열어본 내용이다.

더보기
iostream in visual studio 2015
더보기
// iostream standard header for Microsoft
#pragma once
#ifndef _IOSTREAM_
#define _IOSTREAM_
#ifndef RC_INVOKED
#include <istream>

 #pragma pack(push,_CRT_PACKING)
 #pragma warning(push,3)
 #pragma push_macro("new")
 #undef new
_STD_BEGIN
  #ifdef _M_CEE_PURE
__PURE_APPDOMAIN_GLOBAL extern istream cin, *_Ptr_cin;
__PURE_APPDOMAIN_GLOBAL extern ostream cout, *_Ptr_cout;
__PURE_APPDOMAIN_GLOBAL extern ostream cerr, *_Ptr_cerr;
__PURE_APPDOMAIN_GLOBAL extern ostream clog, *_Ptr_clog;

__PURE_APPDOMAIN_GLOBAL extern wistream wcin, *_Ptr_wcin;
__PURE_APPDOMAIN_GLOBAL extern wostream wcout, *_Ptr_wcout;
__PURE_APPDOMAIN_GLOBAL extern wostream wcerr, *_Ptr_wcerr;
__PURE_APPDOMAIN_GLOBAL extern wostream wclog, *_Ptr_wclog;

  #else /* _M_CEE_PURE */
		// OBJECTS
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 istream cin, *_Ptr_cin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cout, *_Ptr_cout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cerr, *_Ptr_cerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream clog, *_Ptr_clog;

__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wistream wcin, *_Ptr_wcin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wcout, *_Ptr_wcout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wcerr, *_Ptr_wcerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wclog, *_Ptr_wclog;

		// CLASS _Winit
class _CRTIMP2_PURE _Winit {
public:
	__thiscall _Winit();
	__thiscall ~_Winit() _NOEXCEPT;
private:
	__PURE_APPDOMAIN_GLOBAL static int _Init_cnt;
	};
  #endif /* _M_CEE_PURE */
_STD_END
 #pragma pop_macro("new")
 #pragma warning(pop)
 #pragma pack(pop)
#endif /* RC_INVOKED */
#endif /* _IOSTREAM_ */

/*
 * Copyright (c) by P.J. Plauger. All rights reserved.
 * Consult your license regarding permissions and restrictions.
V6.50:0009 */

(근데 일케 올려도 되나...?)

 

위 사진을 참고하면 매크로에 따라 다르겠지만 대충 사용할 함수는 8개 되시겠다.

(생성자, 소멸자는 빼고 그거 누가 호출해...)

 

근데 실제론 4개만 쓴다 보면 된다.

 

왜냐면 cin / wcin 의 차이는 wchar_t 의 사용 여부기 때문.

 

즉 앞의 w 를 떼버리면 cin / cout / cerr / clog 4종을 쓴다 보면 된다.
(아니면 w를 붙여서 wcin ... 을 쓰거나)

반응형