c++의 기본 IO 유형 상세 설명

6585 단어 c + +io
머리말
c++는 입력 과 출력 을 직접 처리 하지 않 고 표준 라 이브 러 리 의 형식 으로 IO 를 처리 합 니 다.IO 의 장 치 는 파일,콘 솔,string 일 수 있 습 니 다.c++는 주로 세 가지 IO 형식 을 정의 하 는데 각각iostream,fstream,sstream헤더 파일 에 포함 된다.
표준 라 이브 러 리 는 넓 은 문 자 를 사용 하 는 언어 를 지원 하기 위해 형식 과 대상 을 wchar 로 정의 합 니 다.t 형식의 데이터.
다음은 이 세 가지 IO 라 이브 러 리 형식 과 헤더 파일 입 니 다.
  • iostream 헤더 파일
  • istream(와 이 드 문자 버 전 wistream),흐름 에서 데 이 터 를 읽 습 니 다.
    ostream(와 이 드 문자 버 전 wostream),스 트림 에 데 이 터 를 기록 합 니 다.
    iostream(와 이 드 문자 버 전 wiostream),읽 기와 쓰기 흐름.
  • fstream 헤더 파일
  • ifstream(와 이 드 문자 버 전 wifstream),파일 에서 데 이 터 를 읽 습 니 다.
    ofstream(와 이 드 문자 버 전 wofstream),파일 에 데 이 터 를 기록 합 니 다.
    fstream(와 이 드 문자 버 전 wfstream),파일 읽 기.
  • sstream 헤더 파일
  • istringstream(와 이 드 문자 버 전 wistringstream),string 에서 데 이 터 를 읽 습 니 다.
    ostringstream(넓 은 문자 버 전 wostringstream),string 에 데 이 터 를 기록 합 니 다.
    stringstream(넓 은 문자 버 전 wstringstream),string 읽 기.
    장치 형식 과 문자 크기 는 우리 가 실행 할 IO 작업 에 영향 을 주지 않 습 니 다.계승 메커니즘 덕분에 상기 유형 은 모두>>,<<연산 자 와getline()함 수 를 사용 할 수 있다.
    IO 형식의 일반적인 특성
    IO 대상 복사 또는 할당 불가
    
    istream is1,is2;
    is1 = is2; //  ,       
    istream is3(is1); //  ,       
    IO 대상 을 복사 할 수 없 기 때문에 형태 참조 나 반환 유형 을 스 트림 형식 으로 설정 할 수 없습니다.보통 인용 방식 으로 전달 하고 되 돌려 줍 니 다.그러나 전달 과 되 돌아 오 는 인용 은const이 될 수 없다.읽 기와 쓰기 IO 대상 이 IO 대상 의 상 태 를 바 꾸 기 때문이다.즉,IO 대상 을 바 꾸 는 것 이다.
    IO 개체 의 상태 정보
    IO 클래스 는 일부 함수 와 표지 위 치 를 정의 하여 흐름 의 상 태 를 검사 하고 조작 하 는 데 도움 을 줍 니 다.
  • strm::iostate는 일종 의 유형 으로 이런 유형 은 바 이 너 리 문자열 과 같 고 모든 바 이 너 리 문자열 은 흐름 의 상 태 를 가리킨다.(strm 는 머리말 의 임의의 IO 형식 입 니 다.
  • eof()함 수 는 IO 대상 에서 호출 하 는 데 사 용 됩 니 다.예 를 들 어cin.eof().스 트림 이 감지 되면eof(파일 끝 표지)이 함 수 는 true 로 돌아 갑 니 다.
  • fail()함수 사용 동상.흐름 이 붕괴 되 거나 IO 작업 이 실패 한 상태 라면 true 로 돌아 갑 니 다.
  • bad()함수 사용 동상.흐름 이 붕괴 상태 에 있 으 면 true 로 돌아 갑 니 다.
  • good()함수 사용 동상.흐름 이 유효한 상태 에 있 으 면 true 로 돌아 갑 니 다.clear()함수 사용 동상.IO 대상 의 모든 조건 상 태 를 복원 하고 흐 르 는 상 태 를 유효 상태 로 바 꾸 어 void 로 되 돌려 줍 니 다.
  • setstate(flags)IO 대상 의 상 태 를 flags(유형strm::iostate가 지시 한 대로 배치 합 니 다.
  • rdstate()함 수 는 IO 대상 에서 호출 되 고 IO 대상 의 상태 위 치 를 읽 으 며 유형 을 되 돌려 줍 니 다strm::iostate.
  • 흐름 에 오류 가 발생 하면 이 흐름 의 후속 IO 작업 이 실패 하기 때문에 흐름 을 사용 하기 전에 좋 은 상태 인지 확인 하 는 것 이 좋 습 니 다....와 같다
    
    //       ,       ,    
    while(cin >> word){
        //     ,    。
    }
    출력 버퍼
    모든 출력 흐름 은 프로그램 이 읽 고 쓴 데 이 터 를 저장 하기 위해 버퍼 를 관리 합 니 다.
    
    cout << "Hello World!";
    "Hello World!"즉시 인쇄 될 수도 있 고 운영 체제 에 의 해 버퍼 에 저장 되 어 인쇄 될 수도 있 습 니 다.
    다음 이 유 는 버퍼 를 새로 고 칠 수 있 습 니 다(즉,대상 장치 나 파일 에 데 이 터 를 출력 하 는 것 입 니 다).
  • 프로그램 이 정상적으로 끝나 면 자동 으로 갱 신 됩 니 다.
  • 버퍼 가 가득 차 면 자동 으로 갱 신 됩 니 다.
  • 연산 자endl,flush,ends수 동 으로 버퍼 를 새로 고 칠 수 있 습 니 다(한 번 만 출력).
  • 
    cout << "1" << endl; //        ,       
        cout << "2" << flush; //      
        cout << "3" << ends;  //           ,       。
    연산 자 유닛 buf 설정 을 통 해 자동 으로 새로 고침 합 니 다.endl,flush,ends와 달리 한 번 의 출력 에 만 사용 되 며,유 니 버 설 buf 후의 출력 흐름 은 출력 할 때마다 자동 으로 버퍼 를 새로 고 칩 니 다.
    
    cout << unitbuf;//            ,        。
        cout << "1"; //  "1",       
        cout << "2"; //  "2",       
        cout << "3"; //  "3",       
        cout << "4"; //  "4",       
        ...
        cout << "nounitbuf"; //          
    연관 류.연 결 된 흐름 을 읽 고 쓸 때 연 결 된 흐름 의 버퍼 가 새로 고침tie()함수 괄호 안에 연 결 된 흐름 이 고 호출tie()의 흐름 은 연 결 된 흐름 입 니 다.cout 와 cin 은 기본적으로 연결 되 어 있 으 며,cin 을 사용 하여 데 이 터 를 읽 을 때,cout 의 버퍼 가 새로 고 쳐 집 니 다.
    
     cout << "Fuck you!"; //       ,cout     ,       "Fuck you!"          ,        。
        int i;
        cin >> i; //cout       ,  "Fuck you!"        (            ,              )。
    
    사용tie()함수 관련 흐름 과 해제 관련:
    
     cin.tie(&cout); //    tie(),         ,      ,      。
        cin.tie(nullptr); //    tie(),     ,    cin       。
        cin.tie(); //  tie(),    cin          。
    
    Note:
    프로그램 이 충돌 하면 이상 하 게 종 료 됩 니 다.출력 버퍼 는 새로 고침 되 지 않 습 니 다.다시 말 하면 버퍼 에 있 는 데 이 터 는 파일 이나 장치 에 출력 되 지 않 았 을 수도 있 습 니 다.
    파일 IO
    파일 흐름 생 성
    앞에서 말 했 듯 이 모든 IO 유형 은>>,<<getline()을 사용 할 수 있 습 니 다.그 밖 에 파일 IO 는 특유 의 조작 이 있 습 니 다.
    파일 흐름 생 성:
    
     fstream fstrm1; //           
        fstream fstrm2(s1); //         s1    (    open())。s1 string   c        。
        //fstream fstrm3(s2, mode);         ,          。
    Note:
    fstream 의 역할 영역 내 코드 가 실 행 될 때 fstream 과 관련 된 파일 이 자동 으로 닫 힙 니 다.즉,fstream 대상 이 소 멸 될 때 close()는 자동 으로 호출 됩 니 다.
    open 과 close
    open 으로 파일 을 열 고 close 로 파일 을 닫 습 니 다.열 린 파일 에 open 을 호출 하 는 데 실 패 했 고 failbit 가 설정 되 었 습 니 다.
    
    string file1 = "qq.dat";
        ifstream ifs;
        ifs.open(file1);
        //    
        ifs.close();
    파일 모드
    자주 사용 하 는 파일 모드 mode 는 다음 과 같 습 니 다.
  • 읽 기 전용 으로 파일 열기
  • out 파일 쓰기 로 열기
  • app 은 매번 쓰기 동작 을 파일 끝 에서 진행 합 니 다
  • ate 파일 을 열 면 바로 파일 끝 에 위치 합 니 다
  • trunc 에서 파일 을 차단 합 니 다.즉,출력 은 파일 에 있 는 기 존 데 이 터 를 덮어 씁 니 다.
  • binary 는 바 이 너 리 방식 으로 파일 을 엽 니 다
  • 여러 모드 를 동시에 지정 할 때 사용|구분:
    
        ofstream ofs("file1", ofstream::out | ofstream::app);
    Note:out모드 는 원본 파일 을 덮어 쓰 는 것 을 포함 하고 원본 파일 의 끝 에 데 이 터 를 추가 하려 면 명시 적 표시trunc모드 가 필요 합 니 다.
    모드 가 지정 되 지 않 으 면 기본 모드 를 사용 합 니 다.
    string IO
    stringstream 만 의 동작 은 다음 과 같 습 니 다.
    
     sstream strm;   //sstream sstream         ,     istringstream 。
        sstream strm(s); //    sstream  ,     s     。
        strm.str(); //  strm   string   。
        strm.str(s); // string s   strm。
    설명:
    c++Basic 은'C++Primer 제5 판'에 대한 개인 적 인 정리 와 어 려 운 해석 으로 주로 한 사람 이 나중에 복습 하 는 데 사용 된다.
    더 깊이 알 고 싶다 면 정품 을 지원 하 세 요.
    c++의 기본 IO 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c+io 스 트림 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기