c+표준 입 출력 흐름 관계 의 전생

입 출력 은 모든 프로 그래 밍 언어 가 없어 서 는 안 될 부분 입 니 다.c++도 예외 가 아 닙 니 다.c++의 표준 입 출력 전생 을 설명 하 겠 습 니 다.
1.우선 iostream 과 iostream.h 의 차 이 를 말 해 봅 시다.

#include<iostream>      //     1998            ,             std
#include<iostream.h>        //              ,             
iostream 은 현재 C++에 규정된 표준 으로 C+코드 를 이식 과 혼합 삽입 에 사용 할 때 확장자.h 의 제한 을 받 지 않 고.h 로 인 한 추가 처리 와 수정 을 피 하 는 데 목적 을 둔다.
iostream 에 포 함 된 기본 기능 은 대응 하 는 iostream.h 와 같 습 니 다.iostream 에서 정의 하 는 내용 은 모두 네 임 스페이스 std 에 있 습 니 다.iostream.h 는 c 언어 를 호 환 하기 위해 표준 입 출력 기능 을 전체 공간 에 정의 합 니 다.그들의 사용 방법 도 다 릅 니 다.또한 iostream 을 직접 사용 하 는 것 을 추천 합 니 다.iostream.h 는 여러 해 전의 오래된 물건 이기 때 문 입 니 다.표준 c++에 서 는 이미 명확 하 게 적용 되 지 않 아 나중에 도 태 될 수 있 습 니 다.
메모:표준화 과정 에서 라 이브 러 리 의 일부 세부 사항 이 수정 되 었 기 때문에 오래된 헤더 파일 과 새 헤더 파일 의 실체 가 완전히 대응 하 는 것 은 아 닙 니 다.
여기 서 그들 이 사용 하 는 차이 점 을 살 펴 보 자.

#include<iostream.h>
    
#include<iostream>
using namespace std;
표준 c++입 출력 을 사용 하려 면 using namespace std 를 추가 해 야 한 다 는 것 을 알 수 있 습 니 다.
2.입 출력 흐름 관계 정리
c++의 입 출력 흐름 을 알 기 위해 서 는 원본 에서 찾 아야 합 니 다.설치 파일 에서 입 출력 흐름 과 관련 된 헤더 파일 을 찾 아야 합 니 다.대충 열거 해 보 세 요.관련 헤더 파일 은 다음 과 같 습 니 다.
  • istream,istream 헤더 파일 은 basicistream 템 플 릿 클래스
  • ostream,ostream 헤더 파일 은 basicostream 템 플 릿 클래스
    4
  • iostream,iostream 은 하나의 istream 대상 과 세 개의 ostream 대상 만 밝 혔 다 는 점 은 나중에 설명 할 것 이다
  • iosfwd,iosfwd 헤더 파일 에서 모든 입 출력 클래스 의 템 플 릿 클래스 의 인 스 턴 스 를 설명 합 니 다fstream,fstream 에서 basicfilebuf 템 플 릿 클래스,basicifstream 템 플 릿 류,basicofstream 템 플 릿 클래스
    iomainip,iomainip 에서 매개 변 수 를 가 진 조작 연산 자 를 밝 혔 습 니 다sstream,sstream 에서 basicstringbuf 템 플 릿 클래스,basicistringstream 템 플 릿 류,basicostringstream 템 플 릿 클래스
  • streambuf,streambuf 에서 basicstreambuf 템 플 릿 클래스
  • 위 에서 말 한 iosfwd 는 입 출력 클래스 템 플 릿 을 실례 화 했 습 니 다.우 리 는 코드 를 캡 처 했 습 니 다.다음 과 같 습 니 다.
    
      /// Base class for @c char streams.
      typedef basic_ios<char>         ios; //   
    
      /// Base class for @c char buffers.
      typedef basic_streambuf<char>     streambuf;
    
      /// Base class for @c char input streams.
      typedef basic_istream<char>         istream;
    
      /// Base class for @c char output streams.
      typedef basic_ostream<char>         ostream;
    
      /// Base class for @c char mixed input and output streams.
      typedef basic_iostream<char>         iostream;
    
      /// Class for @c char memory buffers.
      typedef basic_stringbuf<char>     stringbuf;
    
      /// Class for @c char input memory streams.
      typedef basic_istringstream<char>     istringstream;
    
      /// Class for @c char output memory streams.
      typedef basic_ostringstream<char>     ostringstream;
    
      /// Class for @c char mixed input and output memory streams.
      typedef basic_stringstream<char>     stringstream;
    
      /// Class for @c char file buffers.
      typedef basic_filebuf<char>         filebuf;
    
      /// Class for @c char input file streams.
      typedef basic_ifstream<char>         ifstream;
    
      /// Class for @c char output file streams.
      typedef basic_ofstream<char>         ofstream;
    
      /// Class for @c char mixed input and output file streams.
      typedef basic_fstream<char>         fstream;
    서술 의 편 의 를 위해 다음 에 우 리 는 상기 사례 류 를 직접 사용 하여 템 플 릿 류 를 가리 키 고 다음 에 그림 으로 이런 유형의 관 계 를 설명 한다.

    화살 표 는 계승 관 계 를 나타 내 고 해당 buf 접미사 의 종 류 는 같은 열의 다른 종류 에서 사용 하 는 버퍼 클래스 입 니 다.
    istream,ostream,iostream 세 가 지 를 예 로 들 어 구체 적 인 계승 관 계 를 살 펴 보면 다음 과 같다.
    
    template<typename _CharT, typename _Traits>
        class basic_istream : virtual public basic_ios<_CharT, _Traits>;
    template<typename _CharT, typename _Traits>
        class basic_ostream : virtual public basic_ios<_CharT, _Traits>;
    template<typename _CharT, typename _Traits>
        class basic_iostream
        : public basic_istream<_CharT, _Traits>,
          public basic_ostream<_CharT, _Traits>;
    basicistream 과 basicostream 은 모두 basicios,basic_iostream 은 basic 에 계승istream 과 basicostream,이곳 은 basic 에 계승 되 어 있 습 니 다.ios 를 사용 할 때 가상 으로 계승 해 야 하 는 이 유 는 다 중 상속 을 방지 하기 위해 서 이다.
    주의:이의 성 이란 basiciostream 클래스 대상 은 두 개의 basic 를 생 성 합 니 다.ios 대상,가상 계승 을 사용 하면 basic 만 생 성 됩 니 다.ios 대상 으로 이의 성 을 피 했다.
    여기까지 만 말씀 드 리 면 몇 명 이 iostream 을 처음 접 했 을 때 먼저 cin 과 cout 를 사 용 했 는 지 물 어보 고 싶 습 니 다.사실은 iostream 헤더 파일 을 통 해 우리 가 자주 사용 하 는 cin 대상 은 istream 의 인 스 턴 스 이 고 cout 는 ostream 의 인 스 턴 스 입 니 다.표준 c+에서 ostream 의 다른 두 인 스 턴 스 cerr,clog 도 밝 혔 습 니 다.
    총결산
    c++표준 입 출력 흐름 관계 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c+표준 입 출력 흐름 관계 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기