C++의 sstream 표준 라 이브 러 리 상세 설명

4090 단어 sstreamC++
C++의 sstream 표준 라 이브 러 리 소개 다음 에 우 리 는 C++스타일 의 직렬 제 어 를 계속 살 펴 보 겠 습 니 다.C++는 ostringstream,istringstream,stringstream 등 세 가지 종 류 를 도 입 했 습 니 다.그들 이 만 든 대상 을 사용 하려 면 sstream.h 헤더 파일 을 포함해 야 합 니 다.
istringstream 클래스 는 C++스타일 의 직렬 입력 작업 을 수행 하 는 데 사 용 됩 니 다.ostringstream 클래스 는 C 스타일 의 직렬 출력 작업 을 수행 하 는 데 사 용 됩 니 다.strstream 클래스 는 C 스타일 의 직렬 입 출력 동작 을 지원 합 니 다.
istrings tream 류 는 istream(입력 흐름 류)과 stringstreambase(c+문자열 흐름 기 류)에서 파생 되 었 으 며,ostrings tream 은 ostream(출력 흐름 류)과 stringstreambase(c+문자열 흐름 기 류)에서 파생 되 었 으 며,stringstream 은 iostream(입력 흐름 류)과 stringstreambase(c+문자열 흐름 기 류)에서 파생 되 었 다.
그들의 계승 관 계 는 다음 그림 과 같다.

istringstream 은 string 대상 으로 구성 되 어 있 으 며,istringstream 류 는 string 대상 에서 문 자 를 읽 습 니 다.
istringstream 의 구조 함 수 는 다음 과 같다.istringstream:istringstream(string str);

#include <iostream > 
#include <sstream > 
using  namespace  std; 
int  main ()  

istringstream istr; 
istr.str("1 56.7",); 
// istringstream istr("1 56.7"); 
cout  << istr.str()<<endl; 
int  a; 
float  b; 
istr>>a; 
cout <<a<<endl; 
istr>>b; 
cout <<b<<endl; 
system("pause"); 
}
상례 에서 구조 문자 가 직렬 로 흐 를 때 빈 칸 은 문자열 매개 변수의 내부 경계 가 된다.예 를 들 어 a,b 대상 에 대한 입력'할당'작업 은 이 점 을 증명 했다.문자열 의 빈 칸 은 정형 데이터 와 부동 소수점 데이터 의 분해 점 이 되 었 다.경 계 를 나 누 어 얻 는 방법 을 이용 하여 우 리 는 사실상 문자열 을 정형 대상 과 부동 소수점 대상 으로 나 누 어 변환 하 는 과정 을 완성 하 였 다.
str()구성원 함수 의 사용 은 istringstream 대상 에 게 string 문자열 을 되 돌려 줄 수 있 습 니 다(예 를 들 어 이 예 에서 의 출력 작업(cout<ostringstream 역시 하나의 string 대상 으로 구성 되 어 있 으 며,ostringstream 류 는 하나의 string 에 문 자 를 삽입 합 니 다.
ostringstream 의 구조 함 수 는 다음 과 같다.ostringstream:ostringstream(string str);
예제 코드 는 다음 과 같다.그러면 성장 작업 을 할 때 엔 딩 부터 늘 어 나 지 않 고 기 존 데 이 터 를 수정 해 초과 한 부분 이 늘 어 납 니 다.
stringstream 에 있어 서 제 가 더 말 하지 않 아 도 C+스타일 의 문자열 의 입 출력 에 사용 되 는 것 을 이미 알 고 있 습 니 다.
stringstream 의 구조 함 수 는 다음 과 같다.stringstream:stringstream(string str);
예제 코드 는 다음 과 같다.
예제 코드 는 다음 과 같다

#include <iostream > 
#include <sstream > 
#include <string > 
using  namespace  std; 
int  main ()  

ostringstream ostr; 
//ostr.str("abc");// , , ,  
ostr.put('d'); 
ostr.put('e'); 
ostr<<"fg"; 

string  gstr =  ostr.str(); 
cout <<gstr; 
system("pause"); 
}
다음은 입 출력 상태 표지 에 관 한 지식 을 배 워 보 자.C+에서 담당 하 는 입 출력 시스템 은 모든 입 출력 작업 결과 에 대한 기록 정 보 를 포함한다.이 현재 상태 정 보 는 io 에 포함 되 어 있 습 니 다.state 형식의 대상 중.io_state 는 매 거 진 형식 입 니 다(open 와 같 습 니 다.mode 와 마찬가지)다음은 그것 이 포함 하 는 값 입 니 다.
goodbit 오류 없 음 Eofbit 파일 끝 에 도 착 했 습 니 다.failbit 치 명 적 이지 않 은 입 출력 오류,badbit 치 명 적 인 입 출력 오 류 를 만회 할 수 있 습 니 다.돌 이 킬 수 없습니다.
입 출력 상태 정 보 를 얻 을 수 있 는 두 가지 방법 이 있다.하나의 방법 은 rdstate()함 수 를 호출 하면 현재 상태의 오류 표 시 를 되 돌려 줍 니 다.예 를 들 어 오류 가 없 으 면 rdstate()는 goodbit 로 돌아 갑 니 다.
다음 예제 에 서 는 rdstate()의 용법 을 나타 낸다

#include <iostream > 
#include <sstream > 
#include <string > 
using  namespace  std; 

int  main ()  

    stringstream ostr("ccc"); 
    ostr.put('d'); 
    ostr.put('e'); 
    ostr<<"fg"; 
    string  gstr =  ostr.str(); 
    cout <<gstr<<endl; 

    char  a; 
    ostr>>a; 
    cout <<a 

    system("pause"); 
}
다른 방법 은 아래 의 모든 함수 로 해당 하 는 입력/출력 상 태 를 검사 하 는 것 이다.bool bad().bool eof(); bool fail(); bool good();
다음 예 는 위의 각 구성원 함수 의 용법 을 나타 낸다.오류 상 태 를 지 우려 면 clear()함 수 를 사용 해 야 합 니 다.이 함 수 는 현재 상태 로 설정 할 인자 가 있 습 니 다.ios:goodbit 를 실제 인삼 으로 만 들 면 됩 니 다.
예제 코드 는 다음 과 같다.
예시 코드 는 다음 과 같다.

좋은 웹페이지 즐겨찾기